guohanghui commited on
Commit
63b0027
·
verified ·
1 Parent(s): 56ad23e

Upload 1733 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +15 -0
  2. openmc/mcp_output/README_MCP.md +75 -0
  3. openmc/mcp_output/analysis.json +2126 -0
  4. openmc/mcp_output/diff_report.md +59 -0
  5. openmc/mcp_output/mcp_plugin/__init__.py +0 -0
  6. openmc/mcp_output/mcp_plugin/adapter.py +200 -0
  7. openmc/mcp_output/mcp_plugin/main.py +13 -0
  8. openmc/mcp_output/mcp_plugin/mcp_service.py +108 -0
  9. openmc/mcp_output/requirements.txt +14 -0
  10. openmc/mcp_output/start_mcp.py +30 -0
  11. openmc/mcp_output/workflow_summary.json +207 -0
  12. openmc/source/.clang-format +109 -0
  13. openmc/source/.readthedocs.yaml +18 -0
  14. openmc/source/AGENTS.md +298 -0
  15. openmc/source/CITATION.cff +68 -0
  16. openmc/source/CMakeLists.txt +607 -0
  17. openmc/source/CODEOWNERS +67 -0
  18. openmc/source/CODE_OF_CONDUCT.md +76 -0
  19. openmc/source/CONTRIBUTING.md +45 -0
  20. openmc/source/Dockerfile +241 -0
  21. openmc/source/LICENSE +19 -0
  22. openmc/source/MANIFEST.in +47 -0
  23. openmc/source/README.md +59 -0
  24. openmc/source/__init__.py +4 -0
  25. openmc/source/cmake/Modules/FindLIBMESH.cmake +21 -0
  26. openmc/source/cmake/Modules/GetVersionFromGit.cmake +120 -0
  27. openmc/source/cmake/OpenMCConfig.cmake.in +37 -0
  28. openmc/source/cmake/OpenMCConfigVersion.cmake.in +11 -0
  29. openmc/source/docs/Makefile +141 -0
  30. openmc/source/docs/diagrams/cross_sections.dia +0 -0
  31. openmc/source/docs/diagrams/overview.dia +0 -0
  32. openmc/source/docs/source/_images/2x2_fsrs.jpeg +3 -0
  33. openmc/source/docs/source/_images/2x2_materials.jpeg +0 -0
  34. openmc/source/docs/source/_images/2x2_sr_mesh.png +3 -0
  35. openmc/source/docs/source/_images/3dba.png +0 -0
  36. openmc/source/docs/source/_images/3dcore.png +3 -0
  37. openmc/source/docs/source/_images/3dgeomplot.png +0 -0
  38. openmc/source/docs/source/_images/Tracks.png +0 -0
  39. openmc/source/docs/source/_images/atr.png +3 -0
  40. openmc/source/docs/source/_images/cmfd_flow.png +0 -0
  41. openmc/source/docs/source/_images/cmfd_flow.tex +29 -0
  42. openmc/source/docs/source/_images/cosine-dist.png +0 -0
  43. openmc/source/docs/source/_images/fluxplot.png +0 -0
  44. openmc/source/docs/source/_images/fork.png +0 -0
  45. openmc/source/docs/source/_images/halfspace.svg +54 -0
  46. openmc/source/docs/source/_images/hex_lat.svg +780 -0
  47. openmc/source/docs/source/_images/hexlat_anim.gif +3 -0
  48. openmc/source/docs/source/_images/loss.png +0 -0
  49. openmc/source/docs/source/_images/master-slave.png +0 -0
  50. openmc/source/docs/source/_images/meshfig.png +0 -0
.gitattributes CHANGED
@@ -33,3 +33,18 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ openmc/source/docs/source/_images/2x2_fsrs.jpeg filter=lfs diff=lfs merge=lfs -text
37
+ openmc/source/docs/source/_images/2x2_sr_mesh.png filter=lfs diff=lfs merge=lfs -text
38
+ openmc/source/docs/source/_images/3dcore.png filter=lfs diff=lfs merge=lfs -text
39
+ openmc/source/docs/source/_images/atr.png filter=lfs diff=lfs merge=lfs -text
40
+ openmc/source/docs/source/_images/hexlat_anim.gif filter=lfs diff=lfs merge=lfs -text
41
+ openmc/source/docs/source/_images/phong_triso.png filter=lfs diff=lfs merge=lfs -text
42
+ openmc/source/tests/regression_tests/external_moab/test_mesh_tets.h5m filter=lfs diff=lfs merge=lfs -text
43
+ openmc/source/tests/regression_tests/unstructured_mesh/test_mesh_tets_w_holes.e filter=lfs diff=lfs merge=lfs -text
44
+ openmc/source/tests/regression_tests/unstructured_mesh/test_mesh_tets_w_holes.exo filter=lfs diff=lfs merge=lfs -text
45
+ openmc/source/tests/regression_tests/unstructured_mesh/test_mesh_tets.e filter=lfs diff=lfs merge=lfs -text
46
+ openmc/source/tests/regression_tests/unstructured_mesh/test_mesh_tets.exo filter=lfs diff=lfs merge=lfs -text
47
+ openmc/source/tests/unit_tests/dagmc/broken_model.h5m filter=lfs diff=lfs merge=lfs -text
48
+ openmc/source/tests/unit_tests/dagmc/dagmc.h5m filter=lfs diff=lfs merge=lfs -text
49
+ openmc/source/tests/unit_tests/test_mesh_tets.e filter=lfs diff=lfs merge=lfs -text
50
+ openmc/source/tests/unit_tests/weightwindows/test_mesh_tets.exo filter=lfs diff=lfs merge=lfs -text
openmc/mcp_output/README_MCP.md ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # OpenMC
2
+
3
+ ## Project Introduction
4
+
5
+ OpenMC is a community-developed Monte Carlo neutron and photon transport simulation code designed for nuclear reactor physics and neutron/photon transport simulations. It provides capabilities for fixed source transport simulations, k-eigenvalue calculations, and photon transport. OpenMC supports both multi-group and continuous-energy physics, advanced geometry modeling, and parallel execution using MPI and OpenMP.
6
+
7
+ ## Installation Method
8
+
9
+ To install OpenMC, ensure you have the following dependencies:
10
+
11
+ - Required: `numpy`, `h5py`, `scipy`
12
+ - Optional: `matplotlib`, `pandas`
13
+
14
+ You can install OpenMC using pip:
15
+
16
+ ```
17
+ pip install openmc
18
+ ```
19
+
20
+ ## Quick Start
21
+
22
+ Here's a quick example of how to use OpenMC to run a simulation:
23
+
24
+ 1. Import the OpenMC module.
25
+ 2. Define materials, geometry, and settings.
26
+ 3. Run the simulation.
27
+
28
+ Example:
29
+
30
+ ```
31
+ import openmc
32
+
33
+ # Define materials
34
+ material = openmc.Material()
35
+ material.add_element('U', 1.0)
36
+ material.set_density('g/cm3', 10.0)
37
+
38
+ # Define geometry
39
+ geometry = openmc.Geometry()
40
+
41
+ # Define settings
42
+ settings = openmc.Settings()
43
+ settings.batches = 100
44
+ settings.inactive = 10
45
+ settings.particles = 1000
46
+
47
+ # Run simulation
48
+ openmc.run()
49
+ ```
50
+
51
+ ## Available Tools and Endpoints List
52
+
53
+ - **openmc.run**: Main function to execute the simulation.
54
+ - **openmc.plot_geometry**: Visualize the geometry of the simulation.
55
+ - **openmc.calculate_volumes**: Calculate volumes of defined regions.
56
+ - **openmc.data.load_ace**: Load ACE files for nuclear data.
57
+ - **openmc.data.get_cross_sections**: Access cross-section data.
58
+ - **openmc.deplete.deplete**: Perform depletion calculations.
59
+ - **openmc.lib.init**: Initialize the OpenMC C++ library.
60
+ - **openmc.lib.finalize**: Finalize the OpenMC C++ library.
61
+
62
+ ## Common Issues and Notes
63
+
64
+ - Ensure all required dependencies are installed before running OpenMC.
65
+ - For optimal performance, consider using MPI and OpenMP for parallel execution.
66
+ - If you encounter issues with plotting, ensure `matplotlib` is installed.
67
+ - OpenMC requires a compatible environment with Python 3.x.
68
+
69
+ ## Reference Links or Documentation
70
+
71
+ - [OpenMC GitHub Repository](https://github.com/openmc-dev/openmc)
72
+ - [OpenMC Documentation](https://docs.openmc.org)
73
+ - [OpenMC User Guide](https://docs.openmc.org/en/stable/usersguide/index.html)
74
+
75
+ For more detailed information about specific subsystems and advanced features, refer to the OpenMC documentation and user guide.
openmc/mcp_output/analysis.json ADDED
@@ -0,0 +1,2126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "summary": {
3
+ "repository_url": "https://github.com/openmc-dev/openmc",
4
+ "summary": "Imported via zip fallback, file count: 658",
5
+ "file_tree": {
6
+ ".git_archival.txt": {
7
+ "size": 110
8
+ },
9
+ ".github/ISSUE_TEMPLATE/bug_report.md": {
10
+ "size": 770
11
+ },
12
+ ".github/ISSUE_TEMPLATE/config.yml": {
13
+ "size": 207
14
+ },
15
+ ".github/ISSUE_TEMPLATE/documentation.md": {
16
+ "size": 250
17
+ },
18
+ ".github/ISSUE_TEMPLATE/feature_request.md": {
19
+ "size": 434
20
+ },
21
+ ".github/pull_request_template.md": {
22
+ "size": 1091
23
+ },
24
+ ".github/workflows/ci.yml": {
25
+ "size": 6634
26
+ },
27
+ ".github/workflows/dockerhub-publish-dagmc-libmesh.yml": {
28
+ "size": 884
29
+ },
30
+ ".github/workflows/dockerhub-publish-dagmc.yml": {
31
+ "size": 840
32
+ },
33
+ ".github/workflows/dockerhub-publish-dev.yml": {
34
+ "size": 838
35
+ },
36
+ ".github/workflows/dockerhub-publish-develop-dagmc-libmesh.yml": {
37
+ "size": 922
38
+ },
39
+ ".github/workflows/dockerhub-publish-develop-dagmc.yml": {
40
+ "size": 877
41
+ },
42
+ ".github/workflows/dockerhub-publish-develop-libmesh.yml": {
43
+ "size": 883
44
+ },
45
+ ".github/workflows/dockerhub-publish-libmesh.yml": {
46
+ "size": 846
47
+ },
48
+ ".github/workflows/dockerhub-publish-release-dagmc-libmesh.yml": {
49
+ "size": 1032
50
+ },
51
+ ".github/workflows/dockerhub-publish-release-dagmc.yml": {
52
+ "size": 988
53
+ },
54
+ ".github/workflows/dockerhub-publish-release-libmesh.yml": {
55
+ "size": 993
56
+ },
57
+ ".github/workflows/dockerhub-publish-release.yml": {
58
+ "size": 949
59
+ },
60
+ ".github/workflows/dockerhub-publish.yml": {
61
+ "size": 801
62
+ },
63
+ ".github/workflows/format-check.yml": {
64
+ "size": 811
65
+ },
66
+ ".readthedocs.yaml": {
67
+ "size": 271
68
+ },
69
+ "CMakeLists.txt": {
70
+ "size": 21634
71
+ },
72
+ "CODE_OF_CONDUCT.md": {
73
+ "size": 3454
74
+ },
75
+ "CONTRIBUTING.md": {
76
+ "size": 1769
77
+ },
78
+ "README.md": {
79
+ "size": 3349
80
+ },
81
+ "docs/source/conf.py": {
82
+ "size": 7786
83
+ },
84
+ "examples/assembly/assembly.py": {
85
+ "size": 5003
86
+ },
87
+ "examples/custom_source/CMakeLists.txt": {
88
+ "size": 272
89
+ },
90
+ "examples/custom_source/README.md": {
91
+ "size": 995
92
+ },
93
+ "examples/custom_source/build_xml.py": {
94
+ "size": 1017
95
+ },
96
+ "examples/custom_source/show_flux.py": {
97
+ "size": 352
98
+ },
99
+ "examples/jezebel/jezebel.py": {
100
+ "size": 859
101
+ },
102
+ "examples/lattice/hexagonal/build_xml.py": {
103
+ "size": 5415
104
+ },
105
+ "examples/lattice/nested/build_xml.py": {
106
+ "size": 5557
107
+ },
108
+ "examples/lattice/simple/build_xml.py": {
109
+ "size": 5477
110
+ },
111
+ "examples/parameterized_custom_source/CMakeLists.txt": {
112
+ "size": 314
113
+ },
114
+ "examples/parameterized_custom_source/README.md": {
115
+ "size": 1209
116
+ },
117
+ "examples/parameterized_custom_source/build_xml.py": {
118
+ "size": 1080
119
+ },
120
+ "examples/parameterized_custom_source/show_flux.py": {
121
+ "size": 352
122
+ },
123
+ "examples/pincell/build_xml.py": {
124
+ "size": 3955
125
+ },
126
+ "examples/pincell/plot_spectrum.py": {
127
+ "size": 608
128
+ },
129
+ "examples/pincell_depletion/restart_depletion.py": {
130
+ "size": 3384
131
+ },
132
+ "examples/pincell_depletion/run_depletion.py": {
133
+ "size": 5112
134
+ },
135
+ "examples/pincell_multigroup/build_xml.py": {
136
+ "size": 6199
137
+ },
138
+ "examples/pincell_pulsed/run_pulse.py": {
139
+ "size": 3330
140
+ },
141
+ "examples/pincell_random_ray/build_xml.py": {
142
+ "size": 8646
143
+ },
144
+ "openmc/__init__.py": {
145
+ "size": 1262
146
+ },
147
+ "openmc/_xml.py": {
148
+ "size": 2725
149
+ },
150
+ "openmc/arithmetic.py": {
151
+ "size": 24455
152
+ },
153
+ "openmc/bounding_box.py": {
154
+ "size": 6187
155
+ },
156
+ "openmc/cell.py": {
157
+ "size": 28309
158
+ },
159
+ "openmc/checkvalue.py": {
160
+ "size": 12286
161
+ },
162
+ "openmc/cmfd.py": {
163
+ "size": 123226
164
+ },
165
+ "openmc/config.py": {
166
+ "size": 7564
167
+ },
168
+ "openmc/dagmc.py": {
169
+ "size": 22889
170
+ },
171
+ "openmc/data/__init__.py": {
172
+ "size": 924
173
+ },
174
+ "openmc/data/ace.py": {
175
+ "size": 19970
176
+ },
177
+ "openmc/data/angle_distribution.py": {
178
+ "size": 9906
179
+ },
180
+ "openmc/data/angle_energy.py": {
181
+ "size": 4615
182
+ },
183
+ "openmc/data/correlated.py": {
184
+ "size": 16795
185
+ },
186
+ "openmc/data/data.py": {
187
+ "size": 23386
188
+ },
189
+ "openmc/data/decay.py": {
190
+ "size": 23769
191
+ },
192
+ "openmc/data/effective_dose/__init__.py": {
193
+ "size": 0
194
+ },
195
+ "openmc/data/effective_dose/dose.py": {
196
+ "size": 4321
197
+ },
198
+ "openmc/data/effective_dose/icrp116/electrons.txt": {
199
+ "size": 2616
200
+ },
201
+ "openmc/data/effective_dose/icrp116/helium_ions.txt": {
202
+ "size": 1231
203
+ },
204
+ "openmc/data/effective_dose/icrp116/negative_muons.txt": {
205
+ "size": 2161
206
+ },
207
+ "openmc/data/effective_dose/icrp116/negative_pions.txt": {
208
+ "size": 2309
209
+ },
210
+ "openmc/data/effective_dose/icrp116/neutrons.txt": {
211
+ "size": 6211
212
+ },
213
+ "openmc/data/effective_dose/icrp116/photons.txt": {
214
+ "size": 5114
215
+ },
216
+ "openmc/data/effective_dose/icrp116/photons_kerma.txt": {
217
+ "size": 3229
218
+ },
219
+ "openmc/data/effective_dose/icrp116/positive_muons.txt": {
220
+ "size": 2159
221
+ },
222
+ "openmc/data/effective_dose/icrp116/positive_pions.txt": {
223
+ "size": 2318
224
+ },
225
+ "openmc/data/effective_dose/icrp116/positrons.txt": {
226
+ "size": 2597
227
+ },
228
+ "openmc/data/effective_dose/icrp116/protons.txt": {
229
+ "size": 3156
230
+ },
231
+ "openmc/data/effective_dose/icrp74/generate_photon_effective_dose.py": {
232
+ "size": 2786
233
+ },
234
+ "openmc/data/effective_dose/icrp74/neutrons.txt": {
235
+ "size": 3407
236
+ },
237
+ "openmc/data/effective_dose/icrp74/photons.txt": {
238
+ "size": 2159
239
+ },
240
+ "openmc/data/endf.py": {
241
+ "size": 16119
242
+ },
243
+ "openmc/data/energy_distribution.py": {
244
+ "size": 36954
245
+ },
246
+ "openmc/data/fission_energy.py": {
247
+ "size": 14885
248
+ },
249
+ "openmc/data/function.py": {
250
+ "size": 21767
251
+ },
252
+ "openmc/data/grid.py": {
253
+ "size": 3273
254
+ },
255
+ "openmc/data/half_life.json": {
256
+ "size": 73859
257
+ },
258
+ "openmc/data/kalbach_mann.py": {
259
+ "size": 23202
260
+ },
261
+ "openmc/data/laboratory.py": {
262
+ "size": 4400
263
+ },
264
+ "openmc/data/library.py": {
265
+ "size": 6172
266
+ },
267
+ "openmc/data/mass_1.mas20.txt": {
268
+ "size": 472648
269
+ },
270
+ "openmc/data/multipole.py": {
271
+ "size": 46360
272
+ },
273
+ "openmc/data/nbody.py": {
274
+ "size": 4735
275
+ },
276
+ "openmc/data/neutron.py": {
277
+ "size": 33382
278
+ },
279
+ "openmc/data/njoy.py": {
280
+ "size": 26932
281
+ },
282
+ "openmc/data/photon.py": {
283
+ "size": 45205
284
+ },
285
+ "openmc/data/product.py": {
286
+ "size": 5830
287
+ },
288
+ "openmc/data/reaction.py": {
289
+ "size": 44995
290
+ },
291
+ "openmc/data/resonance.py": {
292
+ "size": 38093
293
+ },
294
+ "openmc/data/resonance_covariance.py": {
295
+ "size": 26544
296
+ },
297
+ "openmc/data/thermal.py": {
298
+ "size": 43258
299
+ },
300
+ "openmc/data/thermal_angle_energy.py": {
301
+ "size": 8228
302
+ },
303
+ "openmc/data/uncorrelated.py": {
304
+ "size": 2612
305
+ },
306
+ "openmc/data/urr.py": {
307
+ "size": 7404
308
+ },
309
+ "openmc/deplete/__init__.py": {
310
+ "size": 475
311
+ },
312
+ "openmc/deplete/_matrix_funcs.py": {
313
+ "size": 3187
314
+ },
315
+ "openmc/deplete/abc.py": {
316
+ "size": 49095
317
+ },
318
+ "openmc/deplete/atom_number.py": {
319
+ "size": 7074
320
+ },
321
+ "openmc/deplete/chain.py": {
322
+ "size": 52258
323
+ },
324
+ "openmc/deplete/coupled_operator.py": {
325
+ "size": 21408
326
+ },
327
+ "openmc/deplete/cram.py": {
328
+ "size": 6753
329
+ },
330
+ "openmc/deplete/d1s.py": {
331
+ "size": 8899
332
+ },
333
+ "openmc/deplete/helpers.py": {
334
+ "size": 38229
335
+ },
336
+ "openmc/deplete/independent_operator.py": {
337
+ "size": 17674
338
+ },
339
+ "openmc/deplete/integrators.py": {
340
+ "size": 21603
341
+ },
342
+ "openmc/deplete/microxs.py": {
343
+ "size": 20279
344
+ },
345
+ "openmc/deplete/nuclide.py": {
346
+ "size": 23682
347
+ },
348
+ "openmc/deplete/openmc_operator.py": {
349
+ "size": 20336
350
+ },
351
+ "openmc/deplete/pool.py": {
352
+ "size": 8432
353
+ },
354
+ "openmc/deplete/r2s.py": {
355
+ "size": 30274
356
+ },
357
+ "openmc/deplete/reaction_rates.py": {
358
+ "size": 4870
359
+ },
360
+ "openmc/deplete/results.py": {
361
+ "size": 22145
362
+ },
363
+ "openmc/deplete/stepresult.py": {
364
+ "size": 20398
365
+ },
366
+ "openmc/deplete/transfer_rates.py": {
367
+ "size": 18953
368
+ },
369
+ "openmc/dummy_comm.py": {
370
+ "size": 599
371
+ },
372
+ "openmc/element.py": {
373
+ "size": 14410
374
+ },
375
+ "openmc/examples.py": {
376
+ "size": 44171
377
+ },
378
+ "openmc/exceptions.py": {
379
+ "size": 796
380
+ },
381
+ "openmc/executor.py": {
382
+ "size": 10225
383
+ },
384
+ "openmc/filter.py": {
385
+ "size": 84767
386
+ },
387
+ "openmc/filter_expansion.py": {
388
+ "size": 18232
389
+ },
390
+ "openmc/geometry.py": {
391
+ "size": 26340
392
+ },
393
+ "openmc/lattice.py": {
394
+ "size": 79449
395
+ },
396
+ "openmc/lib/__init__.py": {
397
+ "size": 1950
398
+ },
399
+ "openmc/lib/cell.py": {
400
+ "size": 12395
401
+ },
402
+ "openmc/lib/core.py": {
403
+ "size": 23016
404
+ },
405
+ "openmc/lib/dagmc.py": {
406
+ "size": 1202
407
+ },
408
+ "openmc/lib/error.py": {
409
+ "size": 1394
410
+ },
411
+ "openmc/lib/filter.py": {
412
+ "size": 24293
413
+ },
414
+ "openmc/lib/material.py": {
415
+ "size": 10399
416
+ },
417
+ "openmc/lib/math.py": {
418
+ "size": 1685
419
+ },
420
+ "openmc/lib/mesh.py": {
421
+ "size": 25801
422
+ },
423
+ "openmc/lib/nuclide.py": {
424
+ "size": 4009
425
+ },
426
+ "openmc/lib/plot.py": {
427
+ "size": 7339
428
+ },
429
+ "openmc/lib/settings.py": {
430
+ "size": 3854
431
+ },
432
+ "openmc/lib/tally.py": {
433
+ "size": 15670
434
+ },
435
+ "openmc/lib/weight_windows.py": {
436
+ "size": 14797
437
+ },
438
+ "openmc/macroscopic.py": {
439
+ "size": 477
440
+ },
441
+ "openmc/material.py": {
442
+ "size": 79799
443
+ },
444
+ "openmc/mesh.py": {
445
+ "size": 102818
446
+ },
447
+ "openmc/mgxs/__init__.py": {
448
+ "size": 85530
449
+ },
450
+ "openmc/mgxs/groups.py": {
451
+ "size": 9667
452
+ },
453
+ "openmc/mgxs/library.py": {
454
+ "size": 65787
455
+ },
456
+ "openmc/mgxs/mdgxs.py": {
457
+ "size": 122863
458
+ },
459
+ "openmc/mgxs/mgxs.py": {
460
+ "size": 265289
461
+ },
462
+ "openmc/mgxs_library.py": {
463
+ "size": 103582
464
+ },
465
+ "openmc/mixin.py": {
466
+ "size": 3348
467
+ },
468
+ "openmc/model/__init__.py": {
469
+ "size": 96
470
+ },
471
+ "openmc/model/funcs.py": {
472
+ "size": 10826
473
+ },
474
+ "openmc/model/model.py": {
475
+ "size": 100057
476
+ },
477
+ "openmc/model/surface_composite.py": {
478
+ "size": 77897
479
+ },
480
+ "openmc/model/triso.py": {
481
+ "size": 44518
482
+ },
483
+ "openmc/mpi.py": {
484
+ "size": 213
485
+ },
486
+ "openmc/nuclide.py": {
487
+ "size": 826
488
+ },
489
+ "openmc/openmoc_compatible.py": {
490
+ "size": 26108
491
+ },
492
+ "openmc/particle_restart.py": {
493
+ "size": 1796
494
+ },
495
+ "openmc/plots.py": {
496
+ "size": 67430
497
+ },
498
+ "openmc/plotter.py": {
499
+ "size": 41316
500
+ },
501
+ "openmc/polynomial.py": {
502
+ "size": 4722
503
+ },
504
+ "openmc/region.py": {
505
+ "size": 21418
506
+ },
507
+ "openmc/search.py": {
508
+ "size": 7184
509
+ },
510
+ "openmc/settings.py": {
511
+ "size": 110147
512
+ },
513
+ "openmc/source.py": {
514
+ "size": 46355
515
+ },
516
+ "openmc/statepoint.py": {
517
+ "size": 27765
518
+ },
519
+ "openmc/stats/__init__.py": {
520
+ "size": 78
521
+ },
522
+ "openmc/stats/multivariate.py": {
523
+ "size": 33386
524
+ },
525
+ "openmc/stats/univariate.py": {
526
+ "size": 44189
527
+ },
528
+ "openmc/summary.py": {
529
+ "size": 9122
530
+ },
531
+ "openmc/surface.py": {
532
+ "size": 97568
533
+ },
534
+ "openmc/tallies.py": {
535
+ "size": 151844
536
+ },
537
+ "openmc/tally_derivative.py": {
538
+ "size": 3845
539
+ },
540
+ "openmc/tracks.py": {
541
+ "size": 10108
542
+ },
543
+ "openmc/trigger.py": {
544
+ "size": 4479
545
+ },
546
+ "openmc/universe.py": {
547
+ "size": 15871
548
+ },
549
+ "openmc/utility_funcs.py": {
550
+ "size": 1935
551
+ },
552
+ "openmc/volume.py": {
553
+ "size": 13915
554
+ },
555
+ "openmc/waste.py": {
556
+ "size": 9691
557
+ },
558
+ "openmc/weight_windows.py": {
559
+ "size": 37798
560
+ },
561
+ "pyproject.toml": {
562
+ "size": 1870
563
+ },
564
+ "pytest.ini": {
565
+ "size": 110
566
+ },
567
+ "tests/__init__.py": {
568
+ "size": 611
569
+ },
570
+ "tests/conftest.py": {
571
+ "size": 1501
572
+ },
573
+ "tests/cpp_unit_tests/CMakeLists.txt": {
574
+ "size": 405
575
+ },
576
+ "tests/dummy_operator.py": {
577
+ "size": 6838
578
+ },
579
+ "tests/regression_tests/__init__.py": {
580
+ "size": 1775
581
+ },
582
+ "tests/regression_tests/adj_cell_rotation/__init__.py": {
583
+ "size": 0
584
+ },
585
+ "tests/regression_tests/adj_cell_rotation/test.py": {
586
+ "size": 1533
587
+ },
588
+ "tests/regression_tests/albedo_box/__init__.py": {
589
+ "size": 0
590
+ },
591
+ "tests/regression_tests/albedo_box/test.py": {
592
+ "size": 136
593
+ },
594
+ "tests/regression_tests/asymmetric_lattice/__init__.py": {
595
+ "size": 0
596
+ },
597
+ "tests/regression_tests/asymmetric_lattice/test.py": {
598
+ "size": 3606
599
+ },
600
+ "tests/regression_tests/cmfd_feed/__init__.py": {
601
+ "size": 0
602
+ },
603
+ "tests/regression_tests/cmfd_feed/test.py": {
604
+ "size": 6494
605
+ },
606
+ "tests/regression_tests/cmfd_feed_2g/__init__.py": {
607
+ "size": 0
608
+ },
609
+ "tests/regression_tests/cmfd_feed_2g/test.py": {
610
+ "size": 952
611
+ },
612
+ "tests/regression_tests/cmfd_feed_expanding_window/__init__.py": {
613
+ "size": 0
614
+ },
615
+ "tests/regression_tests/cmfd_feed_expanding_window/test.py": {
616
+ "size": 843
617
+ },
618
+ "tests/regression_tests/cmfd_feed_ng/__init__.py": {
619
+ "size": 0
620
+ },
621
+ "tests/regression_tests/cmfd_feed_ng/test.py": {
622
+ "size": 980
623
+ },
624
+ "tests/regression_tests/cmfd_feed_rectlin/__init__.py": {
625
+ "size": 0
626
+ },
627
+ "tests/regression_tests/cmfd_feed_rectlin/test.py": {
628
+ "size": 964
629
+ },
630
+ "tests/regression_tests/cmfd_feed_ref_d/__init__.py": {
631
+ "size": 0
632
+ },
633
+ "tests/regression_tests/cmfd_feed_ref_d/test.py": {
634
+ "size": 872
635
+ },
636
+ "tests/regression_tests/cmfd_feed_rolling_window/__init__.py": {
637
+ "size": 0
638
+ },
639
+ "tests/regression_tests/cmfd_feed_rolling_window/test.py": {
640
+ "size": 870
641
+ },
642
+ "tests/regression_tests/cmfd_nofeed/__init__.py": {
643
+ "size": 0
644
+ },
645
+ "tests/regression_tests/cmfd_nofeed/test.py": {
646
+ "size": 827
647
+ },
648
+ "tests/regression_tests/cmfd_restart/__init__.py": {
649
+ "size": 0
650
+ },
651
+ "tests/regression_tests/cmfd_restart/test.py": {
652
+ "size": 2461
653
+ },
654
+ "tests/regression_tests/collision_track/__init__.py": {
655
+ "size": 0
656
+ },
657
+ "tests/regression_tests/collision_track/test.py": {
658
+ "size": 8936
659
+ },
660
+ "tests/regression_tests/complex_cell/__init__.py": {
661
+ "size": 0
662
+ },
663
+ "tests/regression_tests/complex_cell/test.py": {
664
+ "size": 138
665
+ },
666
+ "tests/regression_tests/confidence_intervals/__init__.py": {
667
+ "size": 0
668
+ },
669
+ "tests/regression_tests/confidence_intervals/test.py": {
670
+ "size": 146
671
+ },
672
+ "tests/regression_tests/conftest.py": {
673
+ "size": 580
674
+ },
675
+ "tests/regression_tests/cpp_driver/__init__.py": {
676
+ "size": 0
677
+ },
678
+ "tests/regression_tests/cpp_driver/test.py": {
679
+ "size": 4500
680
+ },
681
+ "tests/regression_tests/create_fission_neutrons/__init__.py": {
682
+ "size": 0
683
+ },
684
+ "tests/regression_tests/create_fission_neutrons/test.py": {
685
+ "size": 2628
686
+ },
687
+ "tests/regression_tests/dagmc/__init__.py": {
688
+ "size": 0
689
+ },
690
+ "tests/regression_tests/dagmc/external/__init__.py": {
691
+ "size": 0
692
+ },
693
+ "tests/regression_tests/dagmc/external/test.py": {
694
+ "size": 4261
695
+ },
696
+ "tests/regression_tests/dagmc/legacy/__init__.py": {
697
+ "size": 0
698
+ },
699
+ "tests/regression_tests/dagmc/legacy/test.py": {
700
+ "size": 3103
701
+ },
702
+ "tests/regression_tests/dagmc/refl/__init__.py": {
703
+ "size": 0
704
+ },
705
+ "tests/regression_tests/dagmc/refl/test.py": {
706
+ "size": 1095
707
+ },
708
+ "tests/regression_tests/dagmc/universes/__init__.py": {
709
+ "size": 0
710
+ },
711
+ "tests/regression_tests/dagmc/universes/test.py": {
712
+ "size": 3592
713
+ },
714
+ "tests/regression_tests/dagmc/uwuw/__init__.py": {
715
+ "size": 0
716
+ },
717
+ "tests/regression_tests/dagmc/uwuw/test.py": {
718
+ "size": 1080
719
+ },
720
+ "tests/regression_tests/density/__init__.py": {
721
+ "size": 0
722
+ },
723
+ "tests/regression_tests/density/test.py": {
724
+ "size": 133
725
+ },
726
+ "tests/regression_tests/deplete_decay_only/__init__.py": {
727
+ "size": 0
728
+ },
729
+ "tests/regression_tests/deplete_decay_only/test.py": {
730
+ "size": 3533
731
+ },
732
+ "tests/regression_tests/deplete_no_transport/__init__.py": {
733
+ "size": 0
734
+ },
735
+ "tests/regression_tests/deplete_no_transport/test.py": {
736
+ "size": 6541
737
+ },
738
+ "tests/regression_tests/deplete_with_transfer_rates/__init__.py": {
739
+ "size": 0
740
+ },
741
+ "tests/regression_tests/deplete_with_transfer_rates/test.py": {
742
+ "size": 4358
743
+ },
744
+ "tests/regression_tests/deplete_with_transport/__init__.py": {
745
+ "size": 0
746
+ },
747
+ "tests/regression_tests/deplete_with_transport/example_geometry.py": {
748
+ "size": 12190
749
+ },
750
+ "tests/regression_tests/deplete_with_transport/test.py": {
751
+ "size": 6525
752
+ },
753
+ "tests/regression_tests/diff_tally/__init__.py": {
754
+ "size": 0
755
+ },
756
+ "tests/regression_tests/diff_tally/test.py": {
757
+ "size": 4124
758
+ },
759
+ "tests/regression_tests/distribmat/__init__.py": {
760
+ "size": 0
761
+ },
762
+ "tests/regression_tests/distribmat/test.py": {
763
+ "size": 3269
764
+ },
765
+ "tests/regression_tests/eigenvalue_genperbatch/__init__.py": {
766
+ "size": 0
767
+ },
768
+ "tests/regression_tests/eigenvalue_genperbatch/test.py": {
769
+ "size": 892
770
+ },
771
+ "tests/regression_tests/eigenvalue_no_inactive/__init__.py": {
772
+ "size": 0
773
+ },
774
+ "tests/regression_tests/eigenvalue_no_inactive/test.py": {
775
+ "size": 148
776
+ },
777
+ "tests/regression_tests/electron_heating/__init__.py": {
778
+ "size": 0
779
+ },
780
+ "tests/regression_tests/electron_heating/test.py": {
781
+ "size": 1114
782
+ },
783
+ "tests/regression_tests/energy_cutoff/__init__.py": {
784
+ "size": 0
785
+ },
786
+ "tests/regression_tests/energy_cutoff/test.py": {
787
+ "size": 2703
788
+ },
789
+ "tests/regression_tests/energy_grid/__init__.py": {
790
+ "size": 0
791
+ },
792
+ "tests/regression_tests/energy_grid/test.py": {
793
+ "size": 137
794
+ },
795
+ "tests/regression_tests/energy_laws/__init__.py": {
796
+ "size": 0
797
+ },
798
+ "tests/regression_tests/energy_laws/test.py": {
799
+ "size": 1383
800
+ },
801
+ "tests/regression_tests/enrichment/__init__.py": {
802
+ "size": 0
803
+ },
804
+ "tests/regression_tests/enrichment/test.py": {
805
+ "size": 1036
806
+ },
807
+ "tests/regression_tests/entropy/__init__.py": {
808
+ "size": 0
809
+ },
810
+ "tests/regression_tests/entropy/test.py": {
811
+ "size": 842
812
+ },
813
+ "tests/regression_tests/external_moab/__init__.py": {
814
+ "size": 0
815
+ },
816
+ "tests/regression_tests/external_moab/test.py": {
817
+ "size": 8944
818
+ },
819
+ "tests/regression_tests/filter_cellfrom/__init__.py": {
820
+ "size": 0
821
+ },
822
+ "tests/regression_tests/filter_cellfrom/test.py": {
823
+ "size": 10624
824
+ },
825
+ "tests/regression_tests/filter_cellinstance/__init__.py": {
826
+ "size": 0
827
+ },
828
+ "tests/regression_tests/filter_cellinstance/test.py": {
829
+ "size": 2945
830
+ },
831
+ "tests/regression_tests/filter_distribcell/__init__.py": {
832
+ "size": 0
833
+ },
834
+ "tests/regression_tests/filter_distribcell/test.py": {
835
+ "size": 2724
836
+ },
837
+ "tests/regression_tests/filter_energyfun/__init__.py": {
838
+ "size": 0
839
+ },
840
+ "tests/regression_tests/filter_energyfun/test.py": {
841
+ "size": 6082
842
+ },
843
+ "tests/regression_tests/filter_mesh/__init__.py": {
844
+ "size": 0
845
+ },
846
+ "tests/regression_tests/filter_mesh/test.py": {
847
+ "size": 3998
848
+ },
849
+ "tests/regression_tests/filter_meshborn/__init__.py": {
850
+ "size": 0
851
+ },
852
+ "tests/regression_tests/filter_meshborn/test.py": {
853
+ "size": 3187
854
+ },
855
+ "tests/regression_tests/filter_musurface/__init__.py": {
856
+ "size": 0
857
+ },
858
+ "tests/regression_tests/filter_musurface/test.py": {
859
+ "size": 1174
860
+ },
861
+ "tests/regression_tests/filter_translations/__init__.py": {
862
+ "size": 0
863
+ },
864
+ "tests/regression_tests/filter_translations/test.py": {
865
+ "size": 2670
866
+ },
867
+ "tests/regression_tests/fixed_source/__init__.py": {
868
+ "size": 0
869
+ },
870
+ "tests/regression_tests/fixed_source/test.py": {
871
+ "size": 1983
872
+ },
873
+ "tests/regression_tests/ifp/__init__.py": {
874
+ "size": 0
875
+ },
876
+ "tests/regression_tests/ifp/groupwise/__init__.py": {
877
+ "size": 0
878
+ },
879
+ "tests/regression_tests/ifp/groupwise/test.py": {
880
+ "size": 1173
881
+ },
882
+ "tests/regression_tests/ifp/total/__init__.py": {
883
+ "size": 0
884
+ },
885
+ "tests/regression_tests/ifp/total/test.py": {
886
+ "size": 1258
887
+ },
888
+ "tests/regression_tests/infinite_cell/__init__.py": {
889
+ "size": 0
890
+ },
891
+ "tests/regression_tests/infinite_cell/test.py": {
892
+ "size": 139
893
+ },
894
+ "tests/regression_tests/iso_in_lab/__init__.py": {
895
+ "size": 0
896
+ },
897
+ "tests/regression_tests/iso_in_lab/test.py": {
898
+ "size": 234
899
+ },
900
+ "tests/regression_tests/lattice/__init__.py": {
901
+ "size": 0
902
+ },
903
+ "tests/regression_tests/lattice/test.py": {
904
+ "size": 133
905
+ },
906
+ "tests/regression_tests/lattice_distribmat/__init__.py": {
907
+ "size": 0
908
+ },
909
+ "tests/regression_tests/lattice_distribmat/test.py": {
910
+ "size": 2698
911
+ },
912
+ "tests/regression_tests/lattice_distribrho/__init__.py": {
913
+ "size": 0
914
+ },
915
+ "tests/regression_tests/lattice_distribrho/test.py": {
916
+ "size": 1321
917
+ },
918
+ "tests/regression_tests/lattice_hex/__init__.py": {
919
+ "size": 0
920
+ },
921
+ "tests/regression_tests/lattice_hex/test.py": {
922
+ "size": 137
923
+ },
924
+ "tests/regression_tests/lattice_hex_coincident/__init__.py": {
925
+ "size": 0
926
+ },
927
+ "tests/regression_tests/lattice_hex_coincident/test.py": {
928
+ "size": 5443
929
+ },
930
+ "tests/regression_tests/lattice_hex_x/__init__.py": {
931
+ "size": 0
932
+ },
933
+ "tests/regression_tests/lattice_hex_x/test.py": {
934
+ "size": 7047
935
+ },
936
+ "tests/regression_tests/lattice_multiple/__init__.py": {
937
+ "size": 0
938
+ },
939
+ "tests/regression_tests/lattice_multiple/test.py": {
940
+ "size": 1626
941
+ },
942
+ "tests/regression_tests/lattice_rotated/__init__.py": {
943
+ "size": 0
944
+ },
945
+ "tests/regression_tests/lattice_rotated/test.py": {
946
+ "size": 3058
947
+ },
948
+ "tests/regression_tests/mg_basic/__init__.py": {
949
+ "size": 0
950
+ },
951
+ "tests/regression_tests/mg_basic/test.py": {
952
+ "size": 3187
953
+ },
954
+ "tests/regression_tests/mg_basic_delayed/__init__.py": {
955
+ "size": 0
956
+ },
957
+ "tests/regression_tests/mg_basic_delayed/test.py": {
958
+ "size": 4615
959
+ },
960
+ "tests/regression_tests/mg_convert/__init__.py": {
961
+ "size": 0
962
+ },
963
+ "tests/regression_tests/mg_convert/test.py": {
964
+ "size": 7271
965
+ },
966
+ "tests/regression_tests/mg_legendre/__init__.py": {
967
+ "size": 0
968
+ },
969
+ "tests/regression_tests/mg_legendre/test.py": {
970
+ "size": 1425
971
+ },
972
+ "tests/regression_tests/mg_max_order/__init__.py": {
973
+ "size": 0
974
+ },
975
+ "tests/regression_tests/mg_max_order/test.py": {
976
+ "size": 1434
977
+ },
978
+ "tests/regression_tests/mg_survival_biasing/__init__.py": {
979
+ "size": 0
980
+ },
981
+ "tests/regression_tests/mg_survival_biasing/test.py": {
982
+ "size": 1420
983
+ },
984
+ "tests/regression_tests/mg_tallies/__init__.py": {
985
+ "size": 0
986
+ },
987
+ "tests/regression_tests/mg_tallies/test.py": {
988
+ "size": 4737
989
+ },
990
+ "tests/regression_tests/mg_temperature/__init__.py": {
991
+ "size": 1
992
+ },
993
+ "tests/regression_tests/mg_temperature/build_2g.py": {
994
+ "size": 13780
995
+ },
996
+ "tests/regression_tests/mg_temperature/test.py": {
997
+ "size": 2623
998
+ },
999
+ "tests/regression_tests/mg_temperature_multi/__init__.py": {
1000
+ "size": 0
1001
+ },
1002
+ "tests/regression_tests/mg_temperature_multi/test.py": {
1003
+ "size": 7662
1004
+ },
1005
+ "tests/regression_tests/mgxs_library_ce_to_mg/__init__.py": {
1006
+ "size": 0
1007
+ },
1008
+ "tests/regression_tests/mgxs_library_ce_to_mg/test.py": {
1009
+ "size": 2712
1010
+ },
1011
+ "tests/regression_tests/mgxs_library_ce_to_mg_nuclides/__init__.py": {
1012
+ "size": 0
1013
+ },
1014
+ "tests/regression_tests/mgxs_library_ce_to_mg_nuclides/test.py": {
1015
+ "size": 2711
1016
+ },
1017
+ "tests/regression_tests/mgxs_library_condense/__init__.py": {
1018
+ "size": 0
1019
+ },
1020
+ "tests/regression_tests/mgxs_library_condense/test.py": {
1021
+ "size": 2466
1022
+ },
1023
+ "tests/regression_tests/mgxs_library_correction/__init__.py": {
1024
+ "size": 0
1025
+ },
1026
+ "tests/regression_tests/mgxs_library_correction/test.py": {
1027
+ "size": 2127
1028
+ },
1029
+ "tests/regression_tests/mgxs_library_distribcell/__init__.py": {
1030
+ "size": 0
1031
+ },
1032
+ "tests/regression_tests/mgxs_library_distribcell/test.py": {
1033
+ "size": 2596
1034
+ },
1035
+ "tests/regression_tests/mgxs_library_hdf5/__init__.py": {
1036
+ "size": 0
1037
+ },
1038
+ "tests/regression_tests/mgxs_library_hdf5/test.py": {
1039
+ "size": 3243
1040
+ },
1041
+ "tests/regression_tests/mgxs_library_histogram/__init__.py": {
1042
+ "size": 0
1043
+ },
1044
+ "tests/regression_tests/mgxs_library_histogram/test.py": {
1045
+ "size": 2179
1046
+ },
1047
+ "tests/regression_tests/mgxs_library_mesh/__init__.py": {
1048
+ "size": 0
1049
+ },
1050
+ "tests/regression_tests/mgxs_library_mesh/test.py": {
1051
+ "size": 2989
1052
+ },
1053
+ "tests/regression_tests/mgxs_library_no_nuclides/__init__.py": {
1054
+ "size": 0
1055
+ },
1056
+ "tests/regression_tests/mgxs_library_no_nuclides/test.py": {
1057
+ "size": 2704
1058
+ },
1059
+ "tests/regression_tests/mgxs_library_nuclides/__init__.py": {
1060
+ "size": 0
1061
+ },
1062
+ "tests/regression_tests/mgxs_library_nuclides/test.py": {
1063
+ "size": 2519
1064
+ },
1065
+ "tests/regression_tests/mgxs_library_specific_nuclides/__init__.py": {
1066
+ "size": 0
1067
+ },
1068
+ "tests/regression_tests/mgxs_library_specific_nuclides/test.py": {
1069
+ "size": 2572
1070
+ },
1071
+ "tests/regression_tests/microxs/test.py": {
1072
+ "size": 2083
1073
+ },
1074
+ "tests/regression_tests/model_xml/__init__.py": {
1075
+ "size": 0
1076
+ },
1077
+ "tests/regression_tests/model_xml/test.py": {
1078
+ "size": 3365
1079
+ },
1080
+ "tests/regression_tests/multipole/__init__.py": {
1081
+ "size": 0
1082
+ },
1083
+ "tests/regression_tests/multipole/test.py": {
1084
+ "size": 2390
1085
+ },
1086
+ "tests/regression_tests/ncrystal/__init__.py": {
1087
+ "size": 0
1088
+ },
1089
+ "tests/regression_tests/ncrystal/test.py": {
1090
+ "size": 3407
1091
+ },
1092
+ "tests/regression_tests/output/__init__.py": {
1093
+ "size": 0
1094
+ },
1095
+ "tests/regression_tests/output/test.py": {
1096
+ "size": 787
1097
+ },
1098
+ "tests/regression_tests/particle_restart_eigval/__init__.py": {
1099
+ "size": 0
1100
+ },
1101
+ "tests/regression_tests/particle_restart_eigval/test.py": {
1102
+ "size": 179
1103
+ },
1104
+ "tests/regression_tests/particle_restart_fixed/__init__.py": {
1105
+ "size": 0
1106
+ },
1107
+ "tests/regression_tests/particle_restart_fixed/test.py": {
1108
+ "size": 179
1109
+ },
1110
+ "tests/regression_tests/periodic/__init__.py": {
1111
+ "size": 0
1112
+ },
1113
+ "tests/regression_tests/periodic/test.py": {
1114
+ "size": 1758
1115
+ },
1116
+ "tests/regression_tests/periodic_6fold/__init__.py": {
1117
+ "size": 0
1118
+ },
1119
+ "tests/regression_tests/periodic_6fold/test.py": {
1120
+ "size": 1765
1121
+ },
1122
+ "tests/regression_tests/periodic_hex/__init__.py": {
1123
+ "size": 0
1124
+ },
1125
+ "tests/regression_tests/periodic_hex/test.py": {
1126
+ "size": 676
1127
+ },
1128
+ "tests/regression_tests/photon_production/__init__.py": {
1129
+ "size": 0
1130
+ },
1131
+ "tests/regression_tests/photon_production/test.py": {
1132
+ "size": 2713
1133
+ },
1134
+ "tests/regression_tests/photon_production_fission/__init__.py": {
1135
+ "size": 0
1136
+ },
1137
+ "tests/regression_tests/photon_production_fission/test.py": {
1138
+ "size": 1666
1139
+ },
1140
+ "tests/regression_tests/photon_source/__init__.py": {
1141
+ "size": 0
1142
+ },
1143
+ "tests/regression_tests/photon_source/test.py": {
1144
+ "size": 1663
1145
+ },
1146
+ "tests/regression_tests/plot/__init__.py": {
1147
+ "size": 0
1148
+ },
1149
+ "tests/regression_tests/plot/test.py": {
1150
+ "size": 248
1151
+ },
1152
+ "tests/regression_tests/plot_overlaps/__init__.py": {
1153
+ "size": 0
1154
+ },
1155
+ "tests/regression_tests/plot_overlaps/test.py": {
1156
+ "size": 256
1157
+ },
1158
+ "tests/regression_tests/plot_projections/__init__.py": {
1159
+ "size": 0
1160
+ },
1161
+ "tests/regression_tests/plot_projections/test.py": {
1162
+ "size": 403
1163
+ },
1164
+ "tests/regression_tests/plot_voxel/__init__.py": {
1165
+ "size": 0
1166
+ },
1167
+ "tests/regression_tests/plot_voxel/test.py": {
1168
+ "size": 278
1169
+ },
1170
+ "tests/regression_tests/ptables_off/__init__.py": {
1171
+ "size": 0
1172
+ },
1173
+ "tests/regression_tests/ptables_off/test.py": {
1174
+ "size": 137
1175
+ },
1176
+ "tests/regression_tests/pulse_height/__init__.py": {
1177
+ "size": 0
1178
+ },
1179
+ "tests/regression_tests/pulse_height/test.py": {
1180
+ "size": 1499
1181
+ },
1182
+ "tests/regression_tests/quadric_surfaces/__init__.py": {
1183
+ "size": 0
1184
+ },
1185
+ "tests/regression_tests/quadric_surfaces/test.py": {
1186
+ "size": 141
1187
+ },
1188
+ "tests/regression_tests/random_ray_adjoint_fixed_source/__init__.py": {
1189
+ "size": 0
1190
+ },
1191
+ "tests/regression_tests/random_ray_adjoint_fixed_source/test.py": {
1192
+ "size": 615
1193
+ },
1194
+ "tests/regression_tests/random_ray_adjoint_k_eff/__init__.py": {
1195
+ "size": 0
1196
+ },
1197
+ "tests/regression_tests/random_ray_adjoint_k_eff/test.py": {
1198
+ "size": 485
1199
+ },
1200
+ "tests/regression_tests/random_ray_auto_convert/__init__.py": {
1201
+ "size": 0
1202
+ },
1203
+ "tests/regression_tests/random_ray_auto_convert/test.py": {
1204
+ "size": 1650
1205
+ },
1206
+ "tests/regression_tests/random_ray_diagonal_stabilization/__init__.py": {
1207
+ "size": 0
1208
+ },
1209
+ "tests/regression_tests/random_ray_diagonal_stabilization/test.py": {
1210
+ "size": 2017
1211
+ },
1212
+ "tests/regression_tests/random_ray_entropy/__init__.py": {
1213
+ "size": 0
1214
+ },
1215
+ "tests/regression_tests/random_ray_entropy/test.py": {
1216
+ "size": 1077
1217
+ },
1218
+ "tests/regression_tests/random_ray_fixed_source_domain/__init__.py": {
1219
+ "size": 0
1220
+ },
1221
+ "tests/regression_tests/random_ray_fixed_source_domain/test.py": {
1222
+ "size": 1840
1223
+ },
1224
+ "tests/regression_tests/random_ray_fixed_source_linear/__init__.py": {
1225
+ "size": 0
1226
+ },
1227
+ "tests/regression_tests/random_ray_fixed_source_linear/test.py": {
1228
+ "size": 841
1229
+ },
1230
+ "tests/regression_tests/random_ray_fixed_source_mesh/__init__.py": {
1231
+ "size": 0
1232
+ },
1233
+ "tests/regression_tests/random_ray_fixed_source_mesh/test.py": {
1234
+ "size": 1691
1235
+ },
1236
+ "tests/regression_tests/random_ray_fixed_source_normalization/__init__.py": {
1237
+ "size": 0
1238
+ },
1239
+ "tests/regression_tests/random_ray_fixed_source_normalization/test.py": {
1240
+ "size": 772
1241
+ },
1242
+ "tests/regression_tests/random_ray_fixed_source_subcritical/__init__.py": {
1243
+ "size": 0
1244
+ },
1245
+ "tests/regression_tests/random_ray_fixed_source_subcritical/test.py": {
1246
+ "size": 4812
1247
+ },
1248
+ "tests/regression_tests/random_ray_halton_samples/__init__.py": {
1249
+ "size": 0
1250
+ },
1251
+ "tests/regression_tests/random_ray_halton_samples/test.py": {
1252
+ "size": 503
1253
+ },
1254
+ "tests/regression_tests/random_ray_k_eff/__init__.py": {
1255
+ "size": 0
1256
+ },
1257
+ "tests/regression_tests/random_ray_k_eff/test.py": {
1258
+ "size": 437
1259
+ },
1260
+ "tests/regression_tests/random_ray_k_eff_mesh/__init__.py": {
1261
+ "size": 0
1262
+ },
1263
+ "tests/regression_tests/random_ray_k_eff_mesh/test.py": {
1264
+ "size": 944
1265
+ },
1266
+ "tests/regression_tests/random_ray_linear/__init__.py": {
1267
+ "size": 0
1268
+ },
1269
+ "tests/regression_tests/random_ray_linear/test.py": {
1270
+ "size": 789
1271
+ },
1272
+ "tests/regression_tests/random_ray_low_density/__init__.py": {
1273
+ "size": 0
1274
+ },
1275
+ "tests/regression_tests/random_ray_low_density/test.py": {
1276
+ "size": 2016
1277
+ },
1278
+ "tests/regression_tests/random_ray_point_source_locator/__init__.py": {
1279
+ "size": 0
1280
+ },
1281
+ "tests/regression_tests/random_ray_point_source_locator/test.py": {
1282
+ "size": 1286
1283
+ },
1284
+ "tests/regression_tests/random_ray_void/__init__.py": {
1285
+ "size": 0
1286
+ },
1287
+ "tests/regression_tests/random_ray_void/test.py": {
1288
+ "size": 2579
1289
+ },
1290
+ "tests/regression_tests/random_ray_volume_estimator/__init__.py": {
1291
+ "size": 0
1292
+ },
1293
+ "tests/regression_tests/random_ray_volume_estimator/test.py": {
1294
+ "size": 904
1295
+ },
1296
+ "tests/regression_tests/random_ray_volume_estimator_linear/__init__.py": {
1297
+ "size": 0
1298
+ },
1299
+ "tests/regression_tests/random_ray_volume_estimator_linear/test.py": {
1300
+ "size": 1044
1301
+ },
1302
+ "tests/regression_tests/reflective_plane/__init__.py": {
1303
+ "size": 0
1304
+ },
1305
+ "tests/regression_tests/reflective_plane/test.py": {
1306
+ "size": 142
1307
+ },
1308
+ "tests/regression_tests/resonance_scattering/__init__.py": {
1309
+ "size": 0
1310
+ },
1311
+ "tests/regression_tests/resonance_scattering/test.py": {
1312
+ "size": 1585
1313
+ },
1314
+ "tests/regression_tests/rotation/__init__.py": {
1315
+ "size": 0
1316
+ },
1317
+ "tests/regression_tests/rotation/test.py": {
1318
+ "size": 134
1319
+ },
1320
+ "tests/regression_tests/salphabeta/__init__.py": {
1321
+ "size": 0
1322
+ },
1323
+ "tests/regression_tests/salphabeta/test.py": {
1324
+ "size": 2045
1325
+ },
1326
+ "tests/regression_tests/score_current/__init__.py": {
1327
+ "size": 0
1328
+ },
1329
+ "tests/regression_tests/score_current/test.py": {
1330
+ "size": 1575
1331
+ },
1332
+ "tests/regression_tests/seed/__init__.py": {
1333
+ "size": 0
1334
+ },
1335
+ "tests/regression_tests/seed/test.py": {
1336
+ "size": 130
1337
+ },
1338
+ "tests/regression_tests/source/__init__.py": {
1339
+ "size": 0
1340
+ },
1341
+ "tests/regression_tests/source/test.py": {
1342
+ "size": 4443
1343
+ },
1344
+ "tests/regression_tests/source_dlopen/__init__.py": {
1345
+ "size": 0
1346
+ },
1347
+ "tests/regression_tests/source_dlopen/test.py": {
1348
+ "size": 2533
1349
+ },
1350
+ "tests/regression_tests/source_file/__init__.py": {
1351
+ "size": 0
1352
+ },
1353
+ "tests/regression_tests/source_file/test.py": {
1354
+ "size": 2869
1355
+ },
1356
+ "tests/regression_tests/source_mcpl_file/__init__.py": {
1357
+ "size": 0
1358
+ },
1359
+ "tests/regression_tests/source_mcpl_file/test.py": {
1360
+ "size": 3007
1361
+ },
1362
+ "tests/regression_tests/source_parameterized_dlopen/__init__.py": {
1363
+ "size": 0
1364
+ },
1365
+ "tests/regression_tests/source_parameterized_dlopen/test.py": {
1366
+ "size": 2522
1367
+ },
1368
+ "tests/regression_tests/sourcepoint_batch/__init__.py": {
1369
+ "size": 0
1370
+ },
1371
+ "tests/regression_tests/sourcepoint_batch/test.py": {
1372
+ "size": 929
1373
+ },
1374
+ "tests/regression_tests/sourcepoint_latest/__init__.py": {
1375
+ "size": 0
1376
+ },
1377
+ "tests/regression_tests/sourcepoint_latest/test.py": {
1378
+ "size": 526
1379
+ },
1380
+ "tests/regression_tests/sourcepoint_restart/__init__.py": {
1381
+ "size": 0
1382
+ },
1383
+ "tests/regression_tests/sourcepoint_restart/test.py": {
1384
+ "size": 145
1385
+ },
1386
+ "tests/regression_tests/statepoint_restart/__init__.py": {
1387
+ "size": 0
1388
+ },
1389
+ "tests/regression_tests/statepoint_restart/test.py": {
1390
+ "size": 3114
1391
+ },
1392
+ "tests/regression_tests/statepoint_sourcesep/__init__.py": {
1393
+ "size": 0
1394
+ },
1395
+ "tests/regression_tests/statepoint_sourcesep/test.py": {
1396
+ "size": 703
1397
+ },
1398
+ "tests/regression_tests/stride/__init__.py": {
1399
+ "size": 0
1400
+ },
1401
+ "tests/regression_tests/stride/test.py": {
1402
+ "size": 745
1403
+ },
1404
+ "tests/regression_tests/surface_source/__init__.py": {
1405
+ "size": 0
1406
+ },
1407
+ "tests/regression_tests/surface_source/test.py": {
1408
+ "size": 7133
1409
+ },
1410
+ "tests/regression_tests/surface_source_write/__init__.py": {
1411
+ "size": 0
1412
+ },
1413
+ "tests/regression_tests/surface_source_write/_visualize.py": {
1414
+ "size": 2098
1415
+ },
1416
+ "tests/regression_tests/surface_source_write/test.py": {
1417
+ "size": 40146
1418
+ },
1419
+ "tests/regression_tests/surface_tally/__init__.py": {
1420
+ "size": 0
1421
+ },
1422
+ "tests/regression_tests/surface_tally/test.py": {
1423
+ "size": 7367
1424
+ },
1425
+ "tests/regression_tests/survival_biasing/__init__.py": {
1426
+ "size": 0
1427
+ },
1428
+ "tests/regression_tests/survival_biasing/test.py": {
1429
+ "size": 142
1430
+ },
1431
+ "tests/regression_tests/tallies/__init__.py": {
1432
+ "size": 0
1433
+ },
1434
+ "tests/regression_tests/tallies/test.py": {
1435
+ "size": 6830
1436
+ },
1437
+ "tests/regression_tests/tally_aggregation/__init__.py": {
1438
+ "size": 0
1439
+ },
1440
+ "tests/regression_tests/tally_aggregation/test.py": {
1441
+ "size": 3332
1442
+ },
1443
+ "tests/regression_tests/tally_arithmetic/__init__.py": {
1444
+ "size": 0
1445
+ },
1446
+ "tests/regression_tests/tally_arithmetic/test.py": {
1447
+ "size": 3339
1448
+ },
1449
+ "tests/regression_tests/tally_assumesep/__init__.py": {
1450
+ "size": 0
1451
+ },
1452
+ "tests/regression_tests/tally_assumesep/test.py": {
1453
+ "size": 141
1454
+ },
1455
+ "tests/regression_tests/tally_nuclides/__init__.py": {
1456
+ "size": 0
1457
+ },
1458
+ "tests/regression_tests/tally_nuclides/test.py": {
1459
+ "size": 140
1460
+ },
1461
+ "tests/regression_tests/tally_slice_merge/__init__.py": {
1462
+ "size": 0
1463
+ },
1464
+ "tests/regression_tests/tally_slice_merge/test.py": {
1465
+ "size": 6691
1466
+ },
1467
+ "tests/regression_tests/time_cutoff/__init__.py": {
1468
+ "size": 0
1469
+ },
1470
+ "tests/regression_tests/time_cutoff/test.py": {
1471
+ "size": 1160
1472
+ },
1473
+ "tests/regression_tests/torus/__init__.py": {
1474
+ "size": 0
1475
+ },
1476
+ "tests/regression_tests/torus/large_major/__init__.py": {
1477
+ "size": 0
1478
+ },
1479
+ "tests/regression_tests/torus/large_major/test.py": {
1480
+ "size": 1281
1481
+ },
1482
+ "tests/regression_tests/torus/test.py": {
1483
+ "size": 1169
1484
+ },
1485
+ "tests/regression_tests/trace/__init__.py": {
1486
+ "size": 0
1487
+ },
1488
+ "tests/regression_tests/trace/test.py": {
1489
+ "size": 131
1490
+ },
1491
+ "tests/regression_tests/track_output/__init__.py": {
1492
+ "size": 0
1493
+ },
1494
+ "tests/regression_tests/track_output/test.py": {
1495
+ "size": 1634
1496
+ },
1497
+ "tests/regression_tests/translation/__init__.py": {
1498
+ "size": 0
1499
+ },
1500
+ "tests/regression_tests/translation/test.py": {
1501
+ "size": 137
1502
+ },
1503
+ "tests/regression_tests/trigger_batch_interval/__init__.py": {
1504
+ "size": 0
1505
+ },
1506
+ "tests/regression_tests/trigger_batch_interval/test.py": {
1507
+ "size": 148
1508
+ },
1509
+ "tests/regression_tests/trigger_no_batch_interval/__init__.py": {
1510
+ "size": 0
1511
+ },
1512
+ "tests/regression_tests/trigger_no_batch_interval/test.py": {
1513
+ "size": 151
1514
+ },
1515
+ "tests/regression_tests/trigger_no_status/__init__.py": {
1516
+ "size": 0
1517
+ },
1518
+ "tests/regression_tests/trigger_no_status/test.py": {
1519
+ "size": 143
1520
+ },
1521
+ "tests/regression_tests/trigger_statepoint_restart/__init__.py": {
1522
+ "size": 0
1523
+ },
1524
+ "tests/regression_tests/trigger_statepoint_restart/test.py": {
1525
+ "size": 4714
1526
+ },
1527
+ "tests/regression_tests/trigger_tallies/__init__.py": {
1528
+ "size": 0
1529
+ },
1530
+ "tests/regression_tests/trigger_tallies/test.py": {
1531
+ "size": 141
1532
+ },
1533
+ "tests/regression_tests/triso/__init__.py": {
1534
+ "size": 0
1535
+ },
1536
+ "tests/regression_tests/triso/test.py": {
1537
+ "size": 3506
1538
+ },
1539
+ "tests/regression_tests/uniform_fs/__init__.py": {
1540
+ "size": 0
1541
+ },
1542
+ "tests/regression_tests/uniform_fs/test.py": {
1543
+ "size": 136
1544
+ },
1545
+ "tests/regression_tests/universe/__init__.py": {
1546
+ "size": 0
1547
+ },
1548
+ "tests/regression_tests/universe/test.py": {
1549
+ "size": 134
1550
+ },
1551
+ "tests/regression_tests/unstructured_mesh/__init__.py": {
1552
+ "size": 0
1553
+ },
1554
+ "tests/regression_tests/unstructured_mesh/test.py": {
1555
+ "size": 11715
1556
+ },
1557
+ "tests/regression_tests/void/__init__.py": {
1558
+ "size": 0
1559
+ },
1560
+ "tests/regression_tests/void/test.py": {
1561
+ "size": 1080
1562
+ },
1563
+ "tests/regression_tests/volume_calc/__init__.py": {
1564
+ "size": 0
1565
+ },
1566
+ "tests/regression_tests/volume_calc/test.py": {
1567
+ "size": 6642
1568
+ },
1569
+ "tests/regression_tests/weightwindows/__init__.py": {
1570
+ "size": 1
1571
+ },
1572
+ "tests/regression_tests/weightwindows/generators/__init__.py": {
1573
+ "size": 0
1574
+ },
1575
+ "tests/regression_tests/weightwindows/generators/test.py": {
1576
+ "size": 1908
1577
+ },
1578
+ "tests/regression_tests/weightwindows/test.py": {
1579
+ "size": 5779
1580
+ },
1581
+ "tests/regression_tests/weightwindows/ww_n.txt": {
1582
+ "size": 10762
1583
+ },
1584
+ "tests/regression_tests/weightwindows/ww_n_cyl.txt": {
1585
+ "size": 5141
1586
+ },
1587
+ "tests/regression_tests/weightwindows/ww_n_sph.txt": {
1588
+ "size": 5186
1589
+ },
1590
+ "tests/regression_tests/weightwindows/ww_p.txt": {
1591
+ "size": 10733
1592
+ },
1593
+ "tests/regression_tests/weightwindows_fw_cadis/__init__.py": {
1594
+ "size": 0
1595
+ },
1596
+ "tests/regression_tests/weightwindows_fw_cadis/test.py": {
1597
+ "size": 914
1598
+ },
1599
+ "tests/regression_tests/weightwindows_fw_cadis_mesh/__init__.py": {
1600
+ "size": 0
1601
+ },
1602
+ "tests/regression_tests/weightwindows_fw_cadis_mesh/test.py": {
1603
+ "size": 1496
1604
+ },
1605
+ "tests/regression_tests/white_plane/__init__.py": {
1606
+ "size": 0
1607
+ },
1608
+ "tests/regression_tests/white_plane/test.py": {
1609
+ "size": 137
1610
+ },
1611
+ "tests/test_matplotlib_import.py": {
1612
+ "size": 160
1613
+ },
1614
+ "tests/testing_harness.py": {
1615
+ "size": 22981
1616
+ },
1617
+ "tests/unit_tests/__init__.py": {
1618
+ "size": 428
1619
+ },
1620
+ "tests/unit_tests/cell_instances/test_hex_multilattice.py": {
1621
+ "size": 3519
1622
+ },
1623
+ "tests/unit_tests/cell_instances/test_rect_multilattice.py": {
1624
+ "size": 2886
1625
+ },
1626
+ "tests/unit_tests/conftest.py": {
1627
+ "size": 3689
1628
+ },
1629
+ "tests/unit_tests/dagmc/__init__.py": {
1630
+ "size": 0
1631
+ },
1632
+ "tests/unit_tests/dagmc/test.py": {
1633
+ "size": 2650
1634
+ },
1635
+ "tests/unit_tests/dagmc/test_bounds.py": {
1636
+ "size": 3810
1637
+ },
1638
+ "tests/unit_tests/dagmc/test_h5m_subdir.py": {
1639
+ "size": 1232
1640
+ },
1641
+ "tests/unit_tests/dagmc/test_lost_particles.py": {
1642
+ "size": 2610
1643
+ },
1644
+ "tests/unit_tests/dagmc/test_model.py": {
1645
+ "size": 9223
1646
+ },
1647
+ "tests/unit_tests/dagmc/test_plot.py": {
1648
+ "size": 2658
1649
+ },
1650
+ "tests/unit_tests/mesh_to_vtk/__init__.py": {
1651
+ "size": 0
1652
+ },
1653
+ "tests/unit_tests/mesh_to_vtk/test.py": {
1654
+ "size": 3161
1655
+ },
1656
+ "tests/unit_tests/mesh_to_vtk/test_vtk_dims.py": {
1657
+ "size": 10267
1658
+ },
1659
+ "tests/unit_tests/test_bounding_box.py": {
1660
+ "size": 5805
1661
+ },
1662
+ "tests/unit_tests/test_cell.py": {
1663
+ "size": 10889
1664
+ },
1665
+ "tests/unit_tests/test_collision_track.py": {
1666
+ "size": 4321
1667
+ },
1668
+ "tests/unit_tests/test_complex_cell_bb.py": {
1669
+ "size": 2981
1670
+ },
1671
+ "tests/unit_tests/test_config.py": {
1672
+ "size": 3863
1673
+ },
1674
+ "tests/unit_tests/test_cylindrical_mesh.py": {
1675
+ "size": 6218
1676
+ },
1677
+ "tests/unit_tests/test_d1s.py": {
1678
+ "size": 5464
1679
+ },
1680
+ "tests/unit_tests/test_data_decay.py": {
1681
+ "size": 5104
1682
+ },
1683
+ "tests/unit_tests/test_data_dose.py": {
1684
+ "size": 2083
1685
+ },
1686
+ "tests/unit_tests/test_data_kalbach_mann.py": {
1687
+ "size": 5327
1688
+ },
1689
+ "tests/unit_tests/test_data_misc.py": {
1690
+ "size": 5343
1691
+ },
1692
+ "tests/unit_tests/test_data_multipole.py": {
1693
+ "size": 2178
1694
+ },
1695
+ "tests/unit_tests/test_data_neutron.py": {
1696
+ "size": 18248
1697
+ },
1698
+ "tests/unit_tests/test_data_photon.py": {
1699
+ "size": 5108
1700
+ },
1701
+ "tests/unit_tests/test_data_thermal.py": {
1702
+ "size": 14525
1703
+ },
1704
+ "tests/unit_tests/test_deplete_activation.py": {
1705
+ "size": 6420
1706
+ },
1707
+ "tests/unit_tests/test_deplete_atom_number.py": {
1708
+ "size": 4651
1709
+ },
1710
+ "tests/unit_tests/test_deplete_chain.py": {
1711
+ "size": 20531
1712
+ },
1713
+ "tests/unit_tests/test_deplete_continue.py": {
1714
+ "size": 4239
1715
+ },
1716
+ "tests/unit_tests/test_deplete_coupled_operator.py": {
1717
+ "size": 3636
1718
+ },
1719
+ "tests/unit_tests/test_deplete_cram.py": {
1720
+ "size": 795
1721
+ },
1722
+ "tests/unit_tests/test_deplete_decay.py": {
1723
+ "size": 2834
1724
+ },
1725
+ "tests/unit_tests/test_deplete_external_source_rates.py": {
1726
+ "size": 7006
1727
+ },
1728
+ "tests/unit_tests/test_deplete_fission_yields.py": {
1729
+ "size": 11355
1730
+ },
1731
+ "tests/unit_tests/test_deplete_independent_operator.py": {
1732
+ "size": 1784
1733
+ },
1734
+ "tests/unit_tests/test_deplete_integrator.py": {
1735
+ "size": 8831
1736
+ },
1737
+ "tests/unit_tests/test_deplete_microxs.py": {
1738
+ "size": 3983
1739
+ },
1740
+ "tests/unit_tests/test_deplete_nuclide.py": {
1741
+ "size": 12307
1742
+ },
1743
+ "tests/unit_tests/test_deplete_operator.py": {
1744
+ "size": 1754
1745
+ },
1746
+ "tests/unit_tests/test_deplete_reaction.py": {
1747
+ "size": 2033
1748
+ },
1749
+ "tests/unit_tests/test_deplete_restart.py": {
1750
+ "size": 2477
1751
+ },
1752
+ "tests/unit_tests/test_deplete_resultslist.py": {
1753
+ "size": 7738
1754
+ },
1755
+ "tests/unit_tests/test_deplete_transfer_rates.py": {
1756
+ "size": 10747
1757
+ },
1758
+ "tests/unit_tests/test_element.py": {
1759
+ "size": 3143
1760
+ },
1761
+ "tests/unit_tests/test_element_wo.py": {
1762
+ "size": 1405
1763
+ },
1764
+ "tests/unit_tests/test_endf.py": {
1765
+ "size": 1354
1766
+ },
1767
+ "tests/unit_tests/test_energy_cutoff.py": {
1768
+ "size": 2055
1769
+ },
1770
+ "tests/unit_tests/test_filter_mesh.py": {
1771
+ "size": 8369
1772
+ },
1773
+ "tests/unit_tests/test_filter_meshborn.py": {
1774
+ "size": 3580
1775
+ },
1776
+ "tests/unit_tests/test_filter_meshmaterial.py": {
1777
+ "size": 2658
1778
+ },
1779
+ "tests/unit_tests/test_filter_musurface.py": {
1780
+ "size": 1090
1781
+ },
1782
+ "tests/unit_tests/test_filter_weight.py": {
1783
+ "size": 1347
1784
+ },
1785
+ "tests/unit_tests/test_filters.py": {
1786
+ "size": 11096
1787
+ },
1788
+ "tests/unit_tests/test_geometry.py": {
1789
+ "size": 13706
1790
+ },
1791
+ "tests/unit_tests/test_heating_by_nuclide.py": {
1792
+ "size": 2105
1793
+ },
1794
+ "tests/unit_tests/test_ifp.py": {
1795
+ "size": 3048
1796
+ },
1797
+ "tests/unit_tests/test_lattice.py": {
1798
+ "size": 13419
1799
+ },
1800
+ "tests/unit_tests/test_lattice_discretization.py": {
1801
+ "size": 3731
1802
+ },
1803
+ "tests/unit_tests/test_lib.py": {
1804
+ "size": 33978
1805
+ },
1806
+ "tests/unit_tests/test_lost_particles.py": {
1807
+ "size": 1628
1808
+ },
1809
+ "tests/unit_tests/test_material.py": {
1810
+ "size": 27311
1811
+ },
1812
+ "tests/unit_tests/test_materials.py": {
1813
+ "size": 3032
1814
+ },
1815
+ "tests/unit_tests/test_mcpl_stat_sum.py": {
1816
+ "size": 2758
1817
+ },
1818
+ "tests/unit_tests/test_mesh.py": {
1819
+ "size": 30972
1820
+ },
1821
+ "tests/unit_tests/test_mesh_from_domain.py": {
1822
+ "size": 7113
1823
+ },
1824
+ "tests/unit_tests/test_mesh_from_lattice.py": {
1825
+ "size": 3336
1826
+ },
1827
+ "tests/unit_tests/test_model.py": {
1828
+ "size": 39855
1829
+ },
1830
+ "tests/unit_tests/test_model_triso.py": {
1831
+ "size": 7635
1832
+ },
1833
+ "tests/unit_tests/test_no_reduce.py": {
1834
+ "size": 1420
1835
+ },
1836
+ "tests/unit_tests/test_no_visible_boundary.py": {
1837
+ "size": 1097
1838
+ },
1839
+ "tests/unit_tests/test_nuclide_heating.py": {
1840
+ "size": 1253
1841
+ },
1842
+ "tests/unit_tests/test_pathlike_simple.py": {
1843
+ "size": 1326
1844
+ },
1845
+ "tests/unit_tests/test_photon_heating.py": {
1846
+ "size": 977
1847
+ },
1848
+ "tests/unit_tests/test_pin.py": {
1849
+ "size": 3545
1850
+ },
1851
+ "tests/unit_tests/test_plots.py": {
1852
+ "size": 9601
1853
+ },
1854
+ "tests/unit_tests/test_plotter.py": {
1855
+ "size": 5392
1856
+ },
1857
+ "tests/unit_tests/test_polynomials.py": {
1858
+ "size": 4006
1859
+ },
1860
+ "tests/unit_tests/test_r2s.py": {
1861
+ "size": 5361
1862
+ },
1863
+ "tests/unit_tests/test_region.py": {
1864
+ "size": 7054
1865
+ },
1866
+ "tests/unit_tests/test_settings.py": {
1867
+ "size": 7840
1868
+ },
1869
+ "tests/unit_tests/test_source.py": {
1870
+ "size": 11015
1871
+ },
1872
+ "tests/unit_tests/test_source_file.py": {
1873
+ "size": 5062
1874
+ },
1875
+ "tests/unit_tests/test_source_mesh.py": {
1876
+ "size": 16494
1877
+ },
1878
+ "tests/unit_tests/test_spherical_mesh.py": {
1879
+ "size": 6383
1880
+ },
1881
+ "tests/unit_tests/test_statepoint.py": {
1882
+ "size": 1852
1883
+ },
1884
+ "tests/unit_tests/test_statepoint_batches.py": {
1885
+ "size": 799
1886
+ },
1887
+ "tests/unit_tests/test_stats.py": {
1888
+ "size": 17491
1889
+ },
1890
+ "tests/unit_tests/test_summary.py": {
1891
+ "size": 1552
1892
+ },
1893
+ "tests/unit_tests/test_surface.py": {
1894
+ "size": 23271
1895
+ },
1896
+ "tests/unit_tests/test_surface_composite.py": {
1897
+ "size": 22961
1898
+ },
1899
+ "tests/unit_tests/test_surface_source_write.py": {
1900
+ "size": 10046
1901
+ },
1902
+ "tests/unit_tests/test_tallies.py": {
1903
+ "size": 14790
1904
+ },
1905
+ "tests/unit_tests/test_tally_multiply_density.py": {
1906
+ "size": 1862
1907
+ },
1908
+ "tests/unit_tests/test_temp_interp.py": {
1909
+ "size": 10239
1910
+ },
1911
+ "tests/unit_tests/test_time_filter.py": {
1912
+ "size": 6321
1913
+ },
1914
+ "tests/unit_tests/test_torus.py": {
1915
+ "size": 1617
1916
+ },
1917
+ "tests/unit_tests/test_tracks.py": {
1918
+ "size": 6856
1919
+ },
1920
+ "tests/unit_tests/test_transfer_volumes.py": {
1921
+ "size": 1164
1922
+ },
1923
+ "tests/unit_tests/test_triggers.py": {
1924
+ "size": 4699
1925
+ },
1926
+ "tests/unit_tests/test_uniform_source_sampling.py": {
1927
+ "size": 2723
1928
+ },
1929
+ "tests/unit_tests/test_universe.py": {
1930
+ "size": 6319
1931
+ },
1932
+ "tests/unit_tests/test_urr_capture.py": {
1933
+ "size": 1271
1934
+ },
1935
+ "tests/unit_tests/test_volume.py": {
1936
+ "size": 1508
1937
+ },
1938
+ "tests/unit_tests/test_waste_classification.py": {
1939
+ "size": 3748
1940
+ },
1941
+ "tests/unit_tests/weightwindows/__init__.py": {
1942
+ "size": 0
1943
+ },
1944
+ "tests/unit_tests/weightwindows/dagmc/__init__.py": {
1945
+ "size": 0
1946
+ },
1947
+ "tests/unit_tests/weightwindows/dagmc/test.py": {
1948
+ "size": 3056
1949
+ },
1950
+ "tests/unit_tests/weightwindows/test.py": {
1951
+ "size": 12398
1952
+ },
1953
+ "tests/unit_tests/weightwindows/test_ww_gen.py": {
1954
+ "size": 11475
1955
+ },
1956
+ "tests/unit_tests/weightwindows/test_ww_list.py": {
1957
+ "size": 970
1958
+ },
1959
+ "tests/unit_tests/weightwindows/test_ww_mg.py": {
1960
+ "size": 1807
1961
+ },
1962
+ "tests/unit_tests/weightwindows/test_wwinp_reader.py": {
1963
+ "size": 4898
1964
+ },
1965
+ "tests/unit_tests/weightwindows/ww_mg.txt": {
1966
+ "size": 675
1967
+ },
1968
+ "tests/unit_tests/weightwindows/ww_n.txt": {
1969
+ "size": 45
1970
+ },
1971
+ "tests/unit_tests/weightwindows/ww_p.txt": {
1972
+ "size": 45
1973
+ },
1974
+ "tools/ci/gha-install.py": {
1975
+ "size": 2099
1976
+ },
1977
+ "tools/dev/generate_release_notes.py": {
1978
+ "size": 543
1979
+ }
1980
+ },
1981
+ "processed_by": "zip_fallback",
1982
+ "success": true
1983
+ },
1984
+ "structure": {
1985
+ "packages": [
1986
+ "source.openmc",
1987
+ "source.openmc.data",
1988
+ "source.openmc.deplete",
1989
+ "source.openmc.lib",
1990
+ "source.openmc.mgxs",
1991
+ "source.openmc.model",
1992
+ "source.openmc.stats",
1993
+ "source.tests",
1994
+ "source.tests.regression_tests",
1995
+ "source.tests.unit_tests"
1996
+ ]
1997
+ },
1998
+ "dependencies": {
1999
+ "has_environment_yml": false,
2000
+ "has_requirements_txt": false,
2001
+ "pyproject": true,
2002
+ "setup_cfg": false,
2003
+ "setup_py": false
2004
+ },
2005
+ "entry_points": {
2006
+ "imports": [],
2007
+ "cli": [],
2008
+ "modules": []
2009
+ },
2010
+ "llm_analysis": {
2011
+ "core_modules": [
2012
+ {
2013
+ "package": "source.openmc",
2014
+ "module": "openmc",
2015
+ "functions": [
2016
+ "run",
2017
+ "plot_geometry",
2018
+ "calculate_volumes"
2019
+ ],
2020
+ "classes": [
2021
+ "Material",
2022
+ "Geometry",
2023
+ "Settings"
2024
+ ],
2025
+ "description": "Core module for OpenMC, providing main functionalities for running simulations, plotting geometries, and managing settings."
2026
+ },
2027
+ {
2028
+ "package": "source.openmc.data",
2029
+ "module": "data",
2030
+ "functions": [
2031
+ "load_ace",
2032
+ "get_cross_sections"
2033
+ ],
2034
+ "classes": [
2035
+ "DataLibrary",
2036
+ "Nuclide"
2037
+ ],
2038
+ "description": "Handles nuclear data processing and management, including loading ACE files and accessing cross-section data."
2039
+ },
2040
+ {
2041
+ "package": "source.openmc.deplete",
2042
+ "module": "deplete",
2043
+ "functions": [
2044
+ "deplete",
2045
+ "integrate"
2046
+ ],
2047
+ "classes": [
2048
+ "Operator",
2049
+ "Integrator"
2050
+ ],
2051
+ "description": "Provides functionality for depletion calculations, including operators and integrators for managing depletion processes."
2052
+ },
2053
+ {
2054
+ "package": "source.openmc.lib",
2055
+ "module": "lib",
2056
+ "functions": [
2057
+ "init",
2058
+ "finalize"
2059
+ ],
2060
+ "classes": [
2061
+ "Cell",
2062
+ "Material"
2063
+ ],
2064
+ "description": "Low-level interface to the OpenMC C++ library, allowing for initialization and finalization of simulations."
2065
+ },
2066
+ {
2067
+ "package": "source.openmc.mgxs",
2068
+ "module": "mgxs",
2069
+ "functions": [
2070
+ "get_mgxs",
2071
+ "create_library"
2072
+ ],
2073
+ "classes": [
2074
+ "MGXS",
2075
+ "Library"
2076
+ ],
2077
+ "description": "Handles multi-group cross-section generation and management, providing tools for creating and accessing MGXS libraries."
2078
+ }
2079
+ ],
2080
+ "cli_commands": [
2081
+ {
2082
+ "name": "openmc",
2083
+ "module": "source.openmc.cli",
2084
+ "description": "Command-line interface for running OpenMC simulations and managing input/output files."
2085
+ }
2086
+ ],
2087
+ "import_strategy": {
2088
+ "primary": "import",
2089
+ "fallback": "cli",
2090
+ "confidence": 0.9
2091
+ },
2092
+ "dependencies": {
2093
+ "required": [
2094
+ "numpy",
2095
+ "h5py",
2096
+ "scipy"
2097
+ ],
2098
+ "optional": [
2099
+ "matplotlib",
2100
+ "pandas"
2101
+ ]
2102
+ },
2103
+ "risk_assessment": {
2104
+ "import_feasibility": 0.9,
2105
+ "intrusiveness_risk": "low",
2106
+ "complexity": "medium"
2107
+ }
2108
+ },
2109
+ "deepwiki_analysis": {
2110
+ "repo_url": "https://github.com/openmc-dev/openmc",
2111
+ "repo_name": "openmc",
2112
+ "content": "openmc-dev/openmc\nCore Architecture\nBuild System and Installation\nPython API and Model System\nC API Bindings\nGeometry and Materials\nMaterial Definition and Composition\nCells, Surfaces, and Regions\nUniverses and Lattices\nDAGMC Integration\nMesh System\nCross Section System\nMulti-Group Cross Section Generation\nCross Section Caching and Data Flow\nSimulation Engine\nSettings and Source Configuration\nSimulation Loop and Batch Management\nParticle Transport and Event Loop\nPhysics and Collision Kernels\nTallies and Results\nTally System and Estimators\nFilters and Spatial Binning\nCMFD Acceleration\nResults Processing and StatePoint Files\nAdvanced Features\nDepletion and Burnup\nPlotting and Visualization\nWeight Windows and Variance Reduction\nDeveloper Guide\nDevelopment Workflow and Testing\nFile Formats and I/O\n.git_archival.txt\n.gitattributes\n.readthedocs.yaml\nCMakeLists.txt\ncmake/Modules/GetVersionFromGit.cmake\ncmake/OpenMCConfigVersion.cmake.in\ndocs/source/conf.py\ndocs/source/license.rst\ndocs/source/pythonapi/capi.rst\ninclude/openmc/bank.h\ninclude/openmc/bounding_box.h\ninclude/openmc/capi.h\ninclude/openmc/constants.h\ninclude/openmc/eigenvalue.h\ninclude/openmc/particle.h\ninclude/openmc/particle_data.h\ninclude/openmc/physics.h\ninclude/openmc/physics_mg.h\ninclude/openmc/simulation.h\ninclude/openmc/tallies/derivative.h\ninclude/openmc/tallies/tally_scoring.h\ninclude/openmc/track_output.h\ninclude/openmc/version.h.in\nman/man1/openmc.1\nopenmc/__init__.py\nopenmc/examples.py\nopenmc/executor.py\nopenmc/lib/cell.py\nopenmc/lib/core.py\nopenmc/lib/material.py\nopenmc/lib/mesh.py\nopenmc/lib/plot.py\nopenmc/model/model.py\nopenmc/plots.py\nsrc/bank.cpp\nsrc/eigenvalue.cpp\nsrc/particle.cpp\nsrc/particle_data.cpp\nsrc/physics.cpp\nsrc/physics_mg.cpp\nsrc/simulation.cpp\nsrc/tallies/derivative.cpp\nsrc/tallies/tally_scoring.cpp\nsrc/track_output.cpp\ntests/regression_tests/distribmat/test.py\ntests/unit_tests/test_lib.py\ntests/unit_tests/test_model.py\ntests/unit_tests/test_plots.py\nThis document provides a high-level introduction to OpenMC, a community-developed Monte Carlo neutron and photon transport simulation code. It covers the overall architecture, execution model, and key subsystems that enable OpenMC to perform fixed source, k-eigenvalue, and subcritical multiplication calculations.\nFor detailed information about specific subsystems, see the Core Architecture section2and its subsections covering the build system, APIs, geometry, materials, cross sections, simulation engine, tallies, and advanced features.\nPurpose and Capabilities\nOpenMC is a Monte Carlo particle transport code designed for nuclear reactor physics and neutron/photon transport simulations. It provides capabilities for:\nFixed source transport simulations- Transport particles from external sources through defined geometries\nK-eigenvalue calculations- Criticality calculations for nuclear reactor analysis\nPhoton transport- Secondary photon generation and transport from neutron interactions\nMulti-group and continuous-energy physics- Support for both energy treatments\nAdvanced geometry modeling- Constructive solid geometry (CSG) and CAD-based geometry via DAGMC\nParallel execution- MPI and OpenMP parallelization support\nSources:docs/source/index.rst1-10src/simulation.cpp140-155CMakeLists.txt32-50\nHigh-Level System Architecture\nOpenMC follows a layered architecture with distinct user interface, core simulation, and infrastructure layers:\nSystem Architecture Diagram\nInfrastructureData ManagementCore Simulation Engine (C++)User Interface Layeropenmc.Modelopenmc.Geometryopenmc.Materialsopenmc executablesrc/main.cppXML Filessettings.xmlmaterials.xmlgeometry.xmltallies.xmlopenmc::simulation namespaceopenmc_run()openmc_next_batch()Particle classevent_calculate_xs()event_advance()event_collide()collision()sample_neutron_reaction()sample_photon_reaction()model::cellsmodel::surfacesmodel::universesmodel::materialsMaterial::calculate_xs()data::nuclidesdata::elementsdata::mghdf5_interface.cppread_hdf5()write_hdf5()statepoint.h5write_statepoint()openmc::StatePointmodel::talliesTally::results_score_*_tally()mpi::n_procsmpi::rankbroadcast_results()vectorunique_ptrsimulation::source_bankCMakeLists.txtlibopenmc target\nInfrastructure\nData Management\nCore Simulation Engine (C++)\nUser Interface Layer\nopenmc.Modelopenmc.Geometryopenmc.Materials\nopenmc executablesrc/main.cpp\nXML Filessettings.xmlmaterials.xmlgeometry.xmltallies.xml\nopenmc::simulation namespaceopenmc_run()openmc_next_batch()\nParticle classevent_calculate_xs()event_advance()event_collide()\ncollision()sample_neutron_reaction()sample_photon_reaction()\nmodel::cellsmodel::surfacesmodel::universes\nmodel::materialsMaterial::calculate_xs()\ndata::nuclidesdata::elementsdata::mg\nhdf5_interface.cppread_hdf5()write_hdf5()\nstatepoint.h5write_statepoint()openmc::StatePoint\nmodel::talliesTally::results_score_*_tally()\nmpi::n_procsmpi::rankbroadcast_results()\nvectorunique_ptrsimulation::source_bank\nCMakeLists.txtlibopenmc target\nSources:src/simulation.cpp1-100src/particle.cpp160-511src/physics.cpp43-92openmc/model/model.py36-158CMakeLists.txt330-472\nCore Execution Model\nOpenMC uses a batch-based Monte Carlo simulation loop with support for both history-based and event-based particle transport:\nSimulation Execution Flow\nfalsetrueboundary closercollision closerYesNoYesNoYesNoopenmc_run()src/simulation.cpp:53openmc_simulation_init()Initialize banks, talliesBatch Loopsimulation::current_batchinitialize_batch()Setup active talliesGeneration Loopsimulation::current_gen(1 to settings::gen_per_batch)initialize_generation()Clear fission_banksettings::event_basedtransport_history_based()OpenMP parallel looptransport_event_based()Process event queuesParticle Loopi_work = 1 tosimulation::work_per_rankprocess_*_events()calculate_xs_queuecollision_queueinitialize_history()Particle::from_source()Particle Event LoopParticle::event_calculate_xs()Material::calculate_xs()Particle::event_advance()distance_to_boundary()p.collision_distance() >p.boundary().distance()Particle::event_cross_surface()cross_lattice() orcross_surface()Particle::event_collide()collision() or collision_mg()Particle::event_revive_from_secondary()Check secondary_bank()Particle::event_death()Accumulate global talliesp.alive() or!secondary_bank().empty()finalize_generation()synchronize_bank()calculate_generation_keff()current_gen <gen_per_batchfinalize_batch()accumulate_tallies()write_statepoint()current_batch <settings::n_max_batchesopenmc_simulation_finalize()write_tallies()Return 0\nboundary closer\ncollision closer\nopenmc_run()src/simulation.cpp:53\nopenmc_simulation_init()Initialize banks, tallies\nBatch Loopsimulation::current_batch\ninitialize_batch()Setup active tallies\nGeneration Loopsimulation::current_gen(1 to settings::gen_per_batch)\ninitialize_generation()Clear fission_bank\nsettings::event_based\ntransport_history_based()OpenMP parallel loop\ntransport_event_based()Process event queues\nParticle Loopi_work = 1 tosimulation::work_per_rank\nprocess_*_events()calculate_xs_queuecollision_queue\ninitialize_history()Particle::from_source()\nParticle Event Loop\nParticle::event_calculate_xs()Material::calculate_xs()\nParticle::event_advance()distance_to_boundary()\np.collision_distance() >p.boundary().distance()\nParticle::event_cross_surface()cross_lattice() orcross_surface()\nParticle::event_collide()collision() or collision_mg()\nParticle::event_revive_from_secondary()Check secondary_bank()\nParticle::event_death()Accumulate global tallies\np.alive() or!secondary_bank().empty()\nfinalize_generation()synchronize_bank()calculate_generation_keff()\ncurrent_gen <gen_per_batch\nfinalize_batch()accumulate_tallies()write_statepoint()\ncurrent_batch <settings::n_max_batches\nopenmc_simulation_finalize()write_tallies()\nSources:src/simulation.cpp53-73src/simulation.cpp232-280src/simulation.cpp359-504src/simulation.cpp804-831src/particle.cpp160-230src/particle.cpp232-286src/particle.cpp288-329src/particle.cpp331-415src/particle.cpp417-473src/particle.cpp475-512\nLanguage and API Structure\nOpenMC uses a dual-language architecture with C++ for performance-critical simulation kernels and Python for user interfaces and pre/post-processing:\nPython-C++ Integration Architecture\nEntry PointsC++ Core (src/, include/)SerializationPython Layer (openmc/)User Scriptsimport openmcopenmc.Modelexport_to_xml()run()deplete()openmc.Geometryopenmc.Cellopenmc.Surfaceopenmc.Materialsopenmc.Materialopenmc.libopenmc.lib.run()_dll (ctypes)XML Filesto_xml_element()from_xml()HDF5 Filesstatepoint.h5cross_sections.h5C API (capi.h)openmc_run()openmc_init()openmc_finalize()libopenmcCMake SHARED librarysimulation namespacecurrent_batchsource_bankkeffmodel namespacecells, surfacesmaterials, talliesParticle classParticleData baseevent_*() methodssrc/main.cppParse CLI argsCall openmc_run()\nEntry Points\nC++ Core (src/, include/)\nSerialization\nPython Layer (openmc/)\nUser Scriptsimport openmc\nopenmc.Modelexport_to_xml()run()deplete()\nopenmc.Geometryopenmc.Cellopenmc.Surface\nopenmc.Materialsopenmc.Material\nopenmc.libopenmc.lib.run()_dll (ctypes)\nXML Filesto_xml_element()from_xml()\nHDF5 Filesstatepoint.h5cross_sections.h5\nC API (capi.h)openmc_run()openmc_init()openmc_finalize()\nlibopenmcCMake SHARED library\nsimulation namespacecurrent_batchsource_bankkeff\nmodel namespacecells, surfacesmaterials, tallies\nParticle classParticleData baseevent_*() methods\nsrc/main.cppParse CLI argsCall openmc_run()\nThe Python API (inopenmc/model/model.py36-158) provides high-level model construction throughopenmc.Model, which can either export to XML files or directly initialize the C++ simulation viaopenmc.lib. The C++ core (src/simulation.cppsrc/particle.cpp) implements Monte Carlo transport with C API bindings (include/openmc/capi.h) for integration.\nopenmc.Model\nSources:openmc/model/model.py36-158openmc/model/model.py345-423openmc/__init__.py1-46openmc/lib/core.py1-50include/openmc/capi.h1-100src/simulation.cpp53-73CMakeLists.txt456-472CMakeLists.txt558-563\nKey Subsystems\nOpenMC consists of several major subsystems that work together to enable Monte Carlo particle transport:\nmodel::cells\nmodel::surfaces\nmodel::universes\nexhaustive_find_cell()\ndistance_to_boundary()\nmodel::materials\nMaterial::calculate_xs()\natom_density()\ncollision()\nsample_neutron_reaction()\nsample_photon_reaction()\ncreate_fission_sites()\ndata::nuclides\ndata::elements\nNuclideMicroXS\nupdate_neutron_xs()\nmodel::tallies\nscore_*_tally()\nFilterBinIter\nTally::results_\nTallyResult\nsimulation::current_batch\nsimulation::keff\nopenmc_run()\nopenmc_next_batch()\nsettings::*\nmpi::n_procs",
2113
+ "model": "gpt-4o-2024-08-06",
2114
+ "source": "selenium",
2115
+ "success": true
2116
+ },
2117
+ "deepwiki_options": {
2118
+ "enabled": true,
2119
+ "model": "gpt-4o-2024-08-06"
2120
+ },
2121
+ "risk": {
2122
+ "import_feasibility": 0.9,
2123
+ "intrusiveness_risk": "low",
2124
+ "complexity": "medium"
2125
+ }
2126
+ }
openmc/mcp_output/diff_report.md ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # OpenMC Project Difference Report
2
+
3
+ **Repository:** OpenMC
4
+ **Project Type:** Python Library
5
+ **Main Features:** Basic Functionality
6
+ **Report Date:** February 3, 2026
7
+ **Intrusiveness:** None
8
+ **Workflow Status:** Success
9
+ **Test Status:** Failed
10
+
11
+ ## Project Overview
12
+
13
+ OpenMC is a Python library designed to provide basic functionality for Monte Carlo simulations of neutron transport. It is widely used in the field of nuclear engineering for its efficiency and ease of use. The project is open-source and continuously evolving to incorporate new features and improvements.
14
+
15
+ ## Difference Analysis
16
+
17
+ ### New Files
18
+
19
+ In this update, 8 new files have been added to the OpenMC repository. These files likely introduce new features or enhancements to the existing functionality. However, no existing files were modified, indicating that the new additions are non-intrusive and do not alter the current codebase.
20
+
21
+ ### Modified Files
22
+
23
+ There were no modifications to existing files in this update. This suggests that the new features or functionalities were implemented in a way that does not interfere with the existing code, maintaining backward compatibility.
24
+
25
+ ## Technical Analysis
26
+
27
+ ### Workflow Status
28
+
29
+ The workflow status is marked as successful, indicating that the integration of new files into the repository was completed without any issues. This suggests that the new additions were properly integrated into the existing project structure.
30
+
31
+ ### Test Status
32
+
33
+ The test status is marked as failed, which is a critical issue that needs immediate attention. This failure indicates that the new additions may have introduced bugs or that the existing test suite is not adequately covering the new functionalities.
34
+
35
+ ## Recommendations and Improvements
36
+
37
+ 1. **Investigate Test Failures:** Conduct a thorough investigation into the test failures to identify the root cause. This may involve reviewing the new files for potential bugs or updating the test suite to cover new functionalities.
38
+
39
+ 2. **Enhance Test Coverage:** Ensure that the test suite is comprehensive and includes tests for all new features. This will help in maintaining the reliability and stability of the library.
40
+
41
+ 3. **Documentation Update:** Update the project documentation to include information about the new features and how they can be utilized. This will aid users in understanding and effectively using the new functionalities.
42
+
43
+ 4. **Code Review:** Conduct a code review of the new files to ensure they adhere to the project's coding standards and best practices.
44
+
45
+ ## Deployment Information
46
+
47
+ Given the test failures, it is not recommended to deploy the current version to production. Once the issues are resolved and the test suite passes successfully, the new version can be deployed. Ensure that all deployment scripts and processes are updated to accommodate the new files.
48
+
49
+ ## Future Planning
50
+
51
+ 1. **Feature Expansion:** Plan for future updates that may include enhancements to the newly added features or additional functionalities that align with the project's goals.
52
+
53
+ 2. **Community Engagement:** Engage with the OpenMC community to gather feedback on the new features and identify areas for improvement.
54
+
55
+ 3. **Continuous Integration:** Implement continuous integration practices to automatically test new changes and ensure that the project remains stable with each update.
56
+
57
+ ## Conclusion
58
+
59
+ The recent update to the OpenMC project introduces new files that expand its functionality. However, the test failures highlight the need for immediate attention to ensure the stability and reliability of the library. By addressing these issues and following the recommendations, the project can continue to evolve and meet the needs of its users effectively.
openmc/mcp_output/mcp_plugin/__init__.py ADDED
File without changes
openmc/mcp_output/mcp_plugin/adapter.py ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+
4
+ # Path settings
5
+ source_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "source")
6
+ sys.path.insert(0, source_path)
7
+
8
+ # Import statements
9
+ try:
10
+ from openmc import Model, Geometry, Cell, Surface, Materials, Material
11
+ from openmc.lib import run as lib_run
12
+ from openmc.model import export_to_xml, deplete
13
+ from openmc import plots, executor
14
+ from openmc.data import ace, angle_distribution, angle_energy
15
+ from openmc.deplete import chain, integrators
16
+ from openmc.stats import multivariate, univariate
17
+ except ImportError as e:
18
+ print(f"Import failed: {e}. Ensure the source directory is correctly set.")
19
+
20
+ # Adapter class
21
+ class Adapter:
22
+ """
23
+ Adapter class for MCP plugin to interface with OpenMC functionalities.
24
+ """
25
+
26
+ def __init__(self):
27
+ self.mode = "import"
28
+
29
+ # ------------------- Model Methods -------------------
30
+
31
+ def create_model_instance(self):
32
+ """
33
+ Create an instance of the OpenMC Model class.
34
+
35
+ Returns:
36
+ dict: Status of the operation and the model instance.
37
+ """
38
+ try:
39
+ model = Model()
40
+ return {"status": "success", "model": model}
41
+ except Exception as e:
42
+ return {"status": "error", "message": str(e)}
43
+
44
+ def export_model_to_xml(self, model):
45
+ """
46
+ Export the given model to XML.
47
+
48
+ Parameters:
49
+ model (Model): The OpenMC model instance.
50
+
51
+ Returns:
52
+ dict: Status of the operation.
53
+ """
54
+ try:
55
+ export_to_xml(model)
56
+ return {"status": "success"}
57
+ except Exception as e:
58
+ return {"status": "error", "message": str(e)}
59
+
60
+ # ------------------- Geometry Methods -------------------
61
+
62
+ def create_geometry_instance(self):
63
+ """
64
+ Create an instance of the OpenMC Geometry class.
65
+
66
+ Returns:
67
+ dict: Status of the operation and the geometry instance.
68
+ """
69
+ try:
70
+ geometry = Geometry()
71
+ return {"status": "success", "geometry": geometry}
72
+ except Exception as e:
73
+ return {"status": "error", "message": str(e)}
74
+
75
+ # ------------------- Cell Methods -------------------
76
+
77
+ def create_cell_instance(self):
78
+ """
79
+ Create an instance of the OpenMC Cell class.
80
+
81
+ Returns:
82
+ dict: Status of the operation and the cell instance.
83
+ """
84
+ try:
85
+ cell = Cell()
86
+ return {"status": "success", "cell": cell}
87
+ except Exception as e:
88
+ return {"status": "error", "message": str(e)}
89
+
90
+ # ------------------- Surface Methods -------------------
91
+
92
+ def create_surface_instance(self):
93
+ """
94
+ Create an instance of the OpenMC Surface class.
95
+
96
+ Returns:
97
+ dict: Status of the operation and the surface instance.
98
+ """
99
+ try:
100
+ surface = Surface()
101
+ return {"status": "success", "surface": surface}
102
+ except Exception as e:
103
+ return {"status": "error", "message": str(e)}
104
+
105
+ # ------------------- Materials Methods -------------------
106
+
107
+ def create_materials_instance(self):
108
+ """
109
+ Create an instance of the OpenMC Materials class.
110
+
111
+ Returns:
112
+ dict: Status of the operation and the materials instance.
113
+ """
114
+ try:
115
+ materials = Materials()
116
+ return {"status": "success", "materials": materials}
117
+ except Exception as e:
118
+ return {"status": "error", "message": str(e)}
119
+
120
+ def create_material_instance(self):
121
+ """
122
+ Create an instance of the OpenMC Material class.
123
+
124
+ Returns:
125
+ dict: Status of the operation and the material instance.
126
+ """
127
+ try:
128
+ material = Material()
129
+ return {"status": "success", "material": material}
130
+ except Exception as e:
131
+ return {"status": "error", "message": str(e)}
132
+
133
+ # ------------------- Execution Methods -------------------
134
+
135
+ def run_simulation(self):
136
+ """
137
+ Run the OpenMC simulation using the library interface.
138
+
139
+ Returns:
140
+ dict: Status of the operation.
141
+ """
142
+ try:
143
+ lib_run()
144
+ return {"status": "success"}
145
+ except Exception as e:
146
+ return {"status": "error", "message": str(e)}
147
+
148
+ # ------------------- Depletion Methods -------------------
149
+
150
+ def deplete_model(self, model):
151
+ """
152
+ Perform depletion on the given model.
153
+
154
+ Parameters:
155
+ model (Model): The OpenMC model instance.
156
+
157
+ Returns:
158
+ dict: Status of the operation.
159
+ """
160
+ try:
161
+ deplete(model)
162
+ return {"status": "success"}
163
+ except Exception as e:
164
+ return {"status": "error", "message": str(e)}
165
+
166
+ # ------------------- Plotting Methods -------------------
167
+
168
+ def generate_plots(self):
169
+ """
170
+ Generate plots using OpenMC plotting capabilities.
171
+
172
+ Returns:
173
+ dict: Status of the operation.
174
+ """
175
+ try:
176
+ plots.plot_geometry()
177
+ return {"status": "success"}
178
+ except Exception as e:
179
+ return {"status": "error", "message": str(e)}
180
+
181
+ # ------------------- Error Handling -------------------
182
+
183
+ def handle_import_failure(self):
184
+ """
185
+ Handle import failure gracefully.
186
+
187
+ Returns:
188
+ dict: Status of the operation.
189
+ """
190
+ return {"status": "error", "message": "Failed to import required modules. Please check the source path and dependencies."}
191
+
192
+ # Example usage
193
+ if __name__ == "__main__":
194
+ adapter = Adapter()
195
+ model_status = adapter.create_model_instance()
196
+ if model_status["status"] == "success":
197
+ model = model_status["model"]
198
+ adapter.export_model_to_xml(model)
199
+ else:
200
+ print(model_status["message"])
openmc/mcp_output/mcp_plugin/main.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ MCP Service Auto-Wrapper - Auto-generated
3
+ """
4
+ from mcp_service import create_app
5
+
6
+ def main():
7
+ """Main entry point"""
8
+ app = create_app()
9
+ return app
10
+
11
+ if __name__ == "__main__":
12
+ app = main()
13
+ app.run()
openmc/mcp_output/mcp_plugin/mcp_service.py ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+
4
+ # Add the local source directory to sys.path
5
+ source_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), "source")
6
+ if source_path not in sys.path:
7
+ sys.path.insert(0, source_path)
8
+
9
+ from fastmcp import FastMCP
10
+ from openmc import Model, Geometry, Materials, Tallies, Settings
11
+
12
+ # Create the FastMCP service application
13
+ mcp = FastMCP("openmc_service")
14
+
15
+ @mcp.tool(name="create_model", description="Create a new OpenMC model")
16
+ def create_model() -> dict:
17
+ """
18
+ Create a new OpenMC model with default settings.
19
+
20
+ Returns:
21
+ dict: A dictionary containing the success status and the model object.
22
+ """
23
+ try:
24
+ model = Model()
25
+ return {"success": True, "result": model}
26
+ except Exception as e:
27
+ return {"success": False, "error": str(e)}
28
+
29
+ @mcp.tool(name="setup_geometry", description="Setup geometry for the OpenMC model")
30
+ def setup_geometry(model: Model) -> dict:
31
+ """
32
+ Setup geometry for the given OpenMC model.
33
+
34
+ Args:
35
+ model (Model): The OpenMC model to setup geometry for.
36
+
37
+ Returns:
38
+ dict: A dictionary containing the success status and the geometry object.
39
+ """
40
+ try:
41
+ geometry = Geometry()
42
+ model.geometry = geometry
43
+ return {"success": True, "result": geometry}
44
+ except Exception as e:
45
+ return {"success": False, "error": str(e)}
46
+
47
+ @mcp.tool(name="setup_materials", description="Setup materials for the OpenMC model")
48
+ def setup_materials(model: Model) -> dict:
49
+ """
50
+ Setup materials for the given OpenMC model.
51
+
52
+ Args:
53
+ model (Model): The OpenMC model to setup materials for.
54
+
55
+ Returns:
56
+ dict: A dictionary containing the success status and the materials object.
57
+ """
58
+ try:
59
+ materials = Materials()
60
+ model.materials = materials
61
+ return {"success": True, "result": materials}
62
+ except Exception as e:
63
+ return {"success": False, "error": str(e)}
64
+
65
+ @mcp.tool(name="setup_tallies", description="Setup tallies for the OpenMC model")
66
+ def setup_tallies(model: Model) -> dict:
67
+ """
68
+ Setup tallies for the given OpenMC model.
69
+
70
+ Args:
71
+ model (Model): The OpenMC model to setup tallies for.
72
+
73
+ Returns:
74
+ dict: A dictionary containing the success status and the tallies object.
75
+ """
76
+ try:
77
+ tallies = Tallies()
78
+ model.tallies = tallies
79
+ return {"success": True, "result": tallies}
80
+ except Exception as e:
81
+ return {"success": False, "error": str(e)}
82
+
83
+ @mcp.tool(name="setup_settings", description="Setup settings for the OpenMC model")
84
+ def setup_settings(model: Model) -> dict:
85
+ """
86
+ Setup settings for the given OpenMC model.
87
+
88
+ Args:
89
+ model (Model): The OpenMC model to setup settings for.
90
+
91
+ Returns:
92
+ dict: A dictionary containing the success status and the settings object.
93
+ """
94
+ try:
95
+ settings = Settings()
96
+ model.settings = settings
97
+ return {"success": True, "result": settings}
98
+ except Exception as e:
99
+ return {"success": False, "error": str(e)}
100
+
101
+ def create_app() -> FastMCP:
102
+ """
103
+ Create and return the FastMCP application instance.
104
+
105
+ Returns:
106
+ FastMCP: The FastMCP application instance.
107
+ """
108
+ return mcp
openmc/mcp_output/requirements.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ fastmcp
2
+ fastapi
3
+ uvicorn[standard]
4
+ pydantic>=2.0.0
5
+ numpy
6
+ h5py
7
+ scipy
8
+ ipython
9
+ matplotlib
10
+ pandas
11
+ lxml
12
+ uncertainties
13
+ setuptools
14
+ endf
openmc/mcp_output/start_mcp.py ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ """
3
+ MCP Service Startup Entry
4
+ """
5
+ import sys
6
+ import os
7
+
8
+ project_root = os.path.dirname(os.path.abspath(__file__))
9
+ mcp_plugin_dir = os.path.join(project_root, "mcp_plugin")
10
+ if mcp_plugin_dir not in sys.path:
11
+ sys.path.insert(0, mcp_plugin_dir)
12
+
13
+ from mcp_service import create_app
14
+
15
+ def main():
16
+ """Start FastMCP service"""
17
+ app = create_app()
18
+ # Use environment variable to configure port, default 8000
19
+ port = int(os.environ.get("MCP_PORT", "8000"))
20
+
21
+ # Choose transport mode based on environment variable
22
+ transport = os.environ.get("MCP_TRANSPORT", "stdio")
23
+ if transport == "http":
24
+ app.run(transport="http", host="0.0.0.0", port=port)
25
+ else:
26
+ # Default to STDIO mode
27
+ app.run()
28
+
29
+ if __name__ == "__main__":
30
+ main()
openmc/mcp_output/workflow_summary.json ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "repository": {
3
+ "name": "openmc",
4
+ "url": "https://github.com/openmc-dev/openmc",
5
+ "local_path": "/export/zxcpu1/shiweijie/code/ghh/Code2MCP/workspace/openmc",
6
+ "description": "Python library",
7
+ "features": "Basic functionality",
8
+ "tech_stack": "Python",
9
+ "stars": 0,
10
+ "forks": 0,
11
+ "language": "Python",
12
+ "last_updated": "",
13
+ "complexity": "medium",
14
+ "intrusiveness_risk": "low"
15
+ },
16
+ "execution": {
17
+ "start_time": 1770119683.5057862,
18
+ "end_time": 1770119787.2947328,
19
+ "duration": 103.78894686698914,
20
+ "status": "success",
21
+ "workflow_status": "success",
22
+ "nodes_executed": [
23
+ "download",
24
+ "analysis",
25
+ "env",
26
+ "generate",
27
+ "run",
28
+ "review",
29
+ "finalize"
30
+ ],
31
+ "total_files_processed": 10,
32
+ "environment_type": "unknown",
33
+ "llm_calls": 0,
34
+ "deepwiki_calls": 0
35
+ },
36
+ "tests": {
37
+ "original_project": {
38
+ "passed": false,
39
+ "details": {},
40
+ "test_coverage": "100%",
41
+ "execution_time": 0,
42
+ "test_files": []
43
+ },
44
+ "mcp_plugin": {
45
+ "passed": true,
46
+ "details": {},
47
+ "service_health": "healthy",
48
+ "startup_time": 0,
49
+ "transport_mode": "stdio",
50
+ "fastmcp_version": "unknown",
51
+ "mcp_version": "unknown"
52
+ }
53
+ },
54
+ "analysis": {
55
+ "structure": {
56
+ "packages": [
57
+ "source.openmc",
58
+ "source.openmc.data",
59
+ "source.openmc.deplete",
60
+ "source.openmc.lib",
61
+ "source.openmc.mgxs",
62
+ "source.openmc.model",
63
+ "source.openmc.stats",
64
+ "source.tests",
65
+ "source.tests.regression_tests",
66
+ "source.tests.unit_tests"
67
+ ]
68
+ },
69
+ "dependencies": {
70
+ "has_environment_yml": false,
71
+ "has_requirements_txt": false,
72
+ "pyproject": true,
73
+ "setup_cfg": false,
74
+ "setup_py": false
75
+ },
76
+ "entry_points": {
77
+ "imports": [],
78
+ "cli": [],
79
+ "modules": []
80
+ },
81
+ "risk_assessment": {
82
+ "import_feasibility": 0.9,
83
+ "intrusiveness_risk": "low",
84
+ "complexity": "medium"
85
+ },
86
+ "deepwiki_analysis": {
87
+ "repo_url": "https://github.com/openmc-dev/openmc",
88
+ "repo_name": "openmc",
89
+ "content": "openmc-dev/openmc\nCore Architecture\nBuild System and Installation\nPython API and Model System\nC API Bindings\nGeometry and Materials\nMaterial Definition and Composition\nCells, Surfaces, and Regions\nUniverses and Lattices\nDAGMC Integration\nMesh System\nCross Section System\nMulti-Group Cross Section Generation\nCross Section Caching and Data Flow\nSimulation Engine\nSettings and Source Configuration\nSimulation Loop and Batch Management\nParticle Transport and Event Loop\nPhysics and Collision Kernels\nTallies and Results\nTally System and Estimators\nFilters and Spatial Binning\nCMFD Acceleration\nResults Processing and StatePoint Files\nAdvanced Features\nDepletion and Burnup\nPlotting and Visualization\nWeight Windows and Variance Reduction\nDeveloper Guide\nDevelopment Workflow and Testing\nFile Formats and I/O\n.git_archival.txt\n.gitattributes\n.readthedocs.yaml\nCMakeLists.txt\ncmake/Modules/GetVersionFromGit.cmake\ncmake/OpenMCConfigVersion.cmake.in\ndocs/source/conf.py\ndocs/source/license.rst\ndocs/source/pythonapi/capi.rst\ninclude/openmc/bank.h\ninclude/openmc/bounding_box.h\ninclude/openmc/capi.h\ninclude/openmc/constants.h\ninclude/openmc/eigenvalue.h\ninclude/openmc/particle.h\ninclude/openmc/particle_data.h\ninclude/openmc/physics.h\ninclude/openmc/physics_mg.h\ninclude/openmc/simulation.h\ninclude/openmc/tallies/derivative.h\ninclude/openmc/tallies/tally_scoring.h\ninclude/openmc/track_output.h\ninclude/openmc/version.h.in\nman/man1/openmc.1\nopenmc/__init__.py\nopenmc/examples.py\nopenmc/executor.py\nopenmc/lib/cell.py\nopenmc/lib/core.py\nopenmc/lib/material.py\nopenmc/lib/mesh.py\nopenmc/lib/plot.py\nopenmc/model/model.py\nopenmc/plots.py\nsrc/bank.cpp\nsrc/eigenvalue.cpp\nsrc/particle.cpp\nsrc/particle_data.cpp\nsrc/physics.cpp\nsrc/physics_mg.cpp\nsrc/simulation.cpp\nsrc/tallies/derivative.cpp\nsrc/tallies/tally_scoring.cpp\nsrc/track_output.cpp\ntests/regression_tests/distribmat/test.py\ntests/unit_tests/test_lib.py\ntests/unit_tests/test_model.py\ntests/unit_tests/test_plots.py\nThis document provides a high-level introduction to OpenMC, a community-developed Monte Carlo neutron and photon transport simulation code. It covers the overall architecture, execution model, and key subsystems that enable OpenMC to perform fixed source, k-eigenvalue, and subcritical multiplication calculations.\nFor detailed information about specific subsystems, see the Core Architecture section2and its subsections covering the build system, APIs, geometry, materials, cross sections, simulation engine, tallies, and advanced features.\nPurpose and Capabilities\nOpenMC is a Monte Carlo particle transport code designed for nuclear reactor physics and neutron/photon transport simulations. It provides capabilities for:\nFixed source transport simulations- Transport particles from external sources through defined geometries\nK-eigenvalue calculations- Criticality calculations for nuclear reactor analysis\nPhoton transport- Secondary photon generation and transport from neutron interactions\nMulti-group and continuous-energy physics- Support for both energy treatments\nAdvanced geometry modeling- Constructive solid geometry (CSG) and CAD-based geometry via DAGMC\nParallel execution- MPI and OpenMP parallelization support\nSources:docs/source/index.rst1-10src/simulation.cpp140-155CMakeLists.txt32-50\nHigh-Level System Architecture\nOpenMC follows a layered architecture with distinct user interface, core simulation, and infrastructure layers:\nSystem Architecture Diagram\nInfrastructureData ManagementCore Simulation Engine (C++)User Interface Layeropenmc.Modelopenmc.Geometryopenmc.Materialsopenmc executablesrc/main.cppXML Filessettings.xmlmaterials.xmlgeometry.xmltallies.xmlopenmc::simulation namespaceopenmc_run()openmc_next_batch()Particle classevent_calculate_xs()event_advance()event_collide()collision()sample_neutron_reaction()sample_photon_reaction()model::cellsmodel::surfacesmodel::universesmodel::materialsMaterial::calculate_xs()data::nuclidesdata::elementsdata::mghdf5_interface.cppread_hdf5()write_hdf5()statepoint.h5write_statepoint()openmc::StatePointmodel::talliesTally::results_score_*_tally()mpi::n_procsmpi::rankbroadcast_results()vectorunique_ptrsimulation::source_bankCMakeLists.txtlibopenmc target\nInfrastructure\nData Management\nCore Simulation Engine (C++)\nUser Interface Layer\nopenmc.Modelopenmc.Geometryopenmc.Materials\nopenmc executablesrc/main.cpp\nXML Filessettings.xmlmaterials.xmlgeometry.xmltallies.xml\nopenmc::simulation namespaceopenmc_run()openmc_next_batch()\nParticle classevent_calculate_xs()event_advance()event_collide()\ncollision()sample_neutron_reaction()sample_photon_reaction()\nmodel::cellsmodel::surfacesmodel::universes\nmodel::materialsMaterial::calculate_xs()\ndata::nuclidesdata::elementsdata::mg\nhdf5_interface.cppread_hdf5()write_hdf5()\nstatepoint.h5write_statepoint()openmc::StatePoint\nmodel::talliesTally::results_score_*_tally()\nmpi::n_procsmpi::rankbroadcast_results()\nvectorunique_ptrsimulation::source_bank\nCMakeLists.txtlibopenmc target\nSources:src/simulation.cpp1-100src/particle.cpp160-511src/physics.cpp43-92openmc/model/model.py36-158CMakeLists.txt330-472\nCore Execution Model\nOpenMC uses a batch-based Monte Carlo simulation loop with support for both history-based and event-based particle transport:\nSimulation Execution Flow\nfalsetrueboundary closercollision closerYesNoYesNoYesNoopenmc_run()src/simulation.cpp:53openmc_simulation_init()Initialize banks, talliesBatch Loopsimulation::current_batchinitialize_batch()Setup active talliesGeneration Loopsimulation::current_gen(1 to settings::gen_per_batch)initialize_generation()Clear fission_banksettings::event_basedtransport_history_based()OpenMP parallel looptransport_event_based()Process event queuesParticle Loopi_work = 1 tosimulation::work_per_rankprocess_*_events()calculate_xs_queuecollision_queueinitialize_history()Particle::from_source()Particle Event LoopParticle::event_calculate_xs()Material::calculate_xs()Particle::event_advance()distance_to_boundary()p.collision_distance() >p.boundary().distance()Particle::event_cross_surface()cross_lattice() orcross_surface()Particle::event_collide()collision() or collision_mg()Particle::event_revive_from_secondary()Check secondary_bank()Particle::event_death()Accumulate global talliesp.alive() or!secondary_bank().empty()finalize_generation()synchronize_bank()calculate_generation_keff()current_gen <gen_per_batchfinalize_batch()accumulate_tallies()write_statepoint()current_batch <settings::n_max_batchesopenmc_simulation_finalize()write_tallies()Return 0\nboundary closer\ncollision closer\nopenmc_run()src/simulation.cpp:53\nopenmc_simulation_init()Initialize banks, tallies\nBatch Loopsimulation::current_batch\ninitialize_batch()Setup active tallies\nGeneration Loopsimulation::current_gen(1 to settings::gen_per_batch)\ninitialize_generation()Clear fission_bank\nsettings::event_based\ntransport_history_based()OpenMP parallel loop\ntransport_event_based()Process event queues\nParticle Loopi_work = 1 tosimulation::work_per_rank\nprocess_*_events()calculate_xs_queuecollision_queue\ninitialize_history()Particle::from_source()\nParticle Event Loop\nParticle::event_calculate_xs()Material::calculate_xs()\nParticle::event_advance()distance_to_boundary()\np.collision_distance() >p.boundary().distance()\nParticle::event_cross_surface()cross_lattice() orcross_surface()\nParticle::event_collide()collision() or collision_mg()\nParticle::event_revive_from_secondary()Check secondary_bank()\nParticle::event_death()Accumulate global tallies\np.alive() or!secondary_bank().empty()\nfinalize_generation()synchronize_bank()calculate_generation_keff()\ncurrent_gen <gen_per_batch\nfinalize_batch()accumulate_tallies()write_statepoint()\ncurrent_batch <settings::n_max_batches\nopenmc_simulation_finalize()write_tallies()\nSources:src/simulation.cpp53-73src/simulation.cpp232-280src/simulation.cpp359-504src/simulation.cpp804-831src/particle.cpp160-230src/particle.cpp232-286src/particle.cpp288-329src/particle.cpp331-415src/particle.cpp417-473src/particle.cpp475-512\nLanguage and API Structure\nOpenMC uses a dual-language architecture with C++ for performance-critical simulation kernels and Python for user interfaces and pre/post-processing:\nPython-C++ Integration Architecture\nEntry PointsC++ Core (src/, include/)SerializationPython Layer (openmc/)User Scriptsimport openmcopenmc.Modelexport_to_xml()run()deplete()openmc.Geometryopenmc.Cellopenmc.Surfaceopenmc.Materialsopenmc.Materialopenmc.libopenmc.lib.run()_dll (ctypes)XML Filesto_xml_element()from_xml()HDF5 Filesstatepoint.h5cross_sections.h5C API (capi.h)openmc_run()openmc_init()openmc_finalize()libopenmcCMake SHARED librarysimulation namespacecurrent_batchsource_bankkeffmodel namespacecells, surfacesmaterials, talliesParticle classParticleData baseevent_*() methodssrc/main.cppParse CLI argsCall openmc_run()\nEntry Points\nC++ Core (src/, include/)\nSerialization\nPython Layer (openmc/)\nUser Scriptsimport openmc\nopenmc.Modelexport_to_xml()run()deplete()\nopenmc.Geometryopenmc.Cellopenmc.Surface\nopenmc.Materialsopenmc.Material\nopenmc.libopenmc.lib.run()_dll (ctypes)\nXML Filesto_xml_element()from_xml()\nHDF5 Filesstatepoint.h5cross_sections.h5\nC API (capi.h)openmc_run()openmc_init()openmc_finalize()\nlibopenmcCMake SHARED library\nsimulation namespacecurrent_batchsource_bankkeff\nmodel namespacecells, surfacesmaterials, tallies\nParticle classParticleData baseevent_*() methods\nsrc/main.cppParse CLI argsCall openmc_run()\nThe Python API (inopenmc/model/model.py36-158) provides high-level model construction throughopenmc.Model, which can either export to XML files or directly initialize the C++ simulation viaopenmc.lib. The C++ core (src/simulation.cppsrc/particle.cpp) implements Monte Carlo transport with C API bindings (include/openmc/capi.h) for integration.\nopenmc.Model\nSources:openmc/model/model.py36-158openmc/model/model.py345-423openmc/__init__.py1-46openmc/lib/core.py1-50include/openmc/capi.h1-100src/simulation.cpp53-73CMakeLists.txt456-472CMakeLists.txt558-563\nKey Subsystems\nOpenMC consists of several major subsystems that work together to enable Monte Carlo particle transport:\nmodel::cells\nmodel::surfaces\nmodel::universes\nexhaustive_find_cell()\ndistance_to_boundary()\nmodel::materials\nMaterial::calculate_xs()\natom_density()\ncollision()\nsample_neutron_reaction()\nsample_photon_reaction()\ncreate_fission_sites()\ndata::nuclides\ndata::elements\nNuclideMicroXS\nupdate_neutron_xs()\nmodel::tallies\nscore_*_tally()\nFilterBinIter\nTally::results_\nTallyResult\nsimulation::current_batch\nsimulation::keff\nopenmc_run()\nopenmc_next_batch()\nsettings::*\nmpi::n_procs",
90
+ "model": "gpt-4o-2024-08-06",
91
+ "source": "selenium",
92
+ "success": true
93
+ },
94
+ "code_complexity": {
95
+ "cyclomatic_complexity": "medium",
96
+ "cognitive_complexity": "medium",
97
+ "maintainability_index": 75
98
+ },
99
+ "security_analysis": {
100
+ "vulnerabilities_found": 0,
101
+ "security_score": 85,
102
+ "recommendations": []
103
+ }
104
+ },
105
+ "plugin_generation": {
106
+ "files_created": [
107
+ "mcp_output/start_mcp.py",
108
+ "mcp_output/mcp_plugin/__init__.py",
109
+ "mcp_output/mcp_plugin/mcp_service.py",
110
+ "mcp_output/mcp_plugin/adapter.py",
111
+ "mcp_output/mcp_plugin/main.py",
112
+ "mcp_output/requirements.txt",
113
+ "mcp_output/README_MCP.md"
114
+ ],
115
+ "main_entry": "start_mcp.py",
116
+ "requirements": [
117
+ "fastmcp>=0.1.0",
118
+ "pydantic>=2.0.0"
119
+ ],
120
+ "readme_path": "/export/zxcpu1/shiweijie/code/ghh/Code2MCP/workspace/openmc/mcp_output/README_MCP.md",
121
+ "adapter_mode": "import",
122
+ "total_lines_of_code": 0,
123
+ "generated_files_size": 0,
124
+ "tool_endpoints": 0,
125
+ "supported_features": [
126
+ "Basic functionality"
127
+ ],
128
+ "generated_tools": [
129
+ "Basic tools",
130
+ "Health check tools",
131
+ "Version info tools"
132
+ ]
133
+ },
134
+ "code_review": {},
135
+ "errors": [],
136
+ "warnings": [],
137
+ "recommendations": [
138
+ "Improve test coverage by adding more unit tests for critical modules",
139
+ "ensure all dependencies are clearly defined in a requirements.txt or environment.yml file",
140
+ "optimize the size of large files to improve performance",
141
+ "enhance documentation for better clarity and user guidance",
142
+ "implement continuous integration to automate testing and deployment",
143
+ "refactor complex functions to improve code readability and maintainability",
144
+ "ensure all CLI commands are thoroughly tested",
145
+ "consider adding more examples and tutorials to help new users",
146
+ "review and update the code of conduct and contributing guidelines to encourage community contributions",
147
+ "conduct a performance analysis to identify and address bottlenecks",
148
+ "ensure all modules have consistent coding standards and style",
149
+ "explore opportunities for parallelization to improve simulation speed",
150
+ "regularly update dependencies to the latest versions to ensure security and compatibility",
151
+ "enhance error handling and logging for better debugging and user experience."
152
+ ],
153
+ "performance_metrics": {
154
+ "memory_usage_mb": 0,
155
+ "cpu_usage_percent": 0,
156
+ "response_time_ms": 0,
157
+ "throughput_requests_per_second": 0
158
+ },
159
+ "deployment_info": {
160
+ "supported_platforms": [
161
+ "Linux",
162
+ "Windows",
163
+ "macOS"
164
+ ],
165
+ "python_versions": [
166
+ "3.8",
167
+ "3.9",
168
+ "3.10",
169
+ "3.11",
170
+ "3.12"
171
+ ],
172
+ "deployment_methods": [
173
+ "Docker",
174
+ "pip",
175
+ "conda"
176
+ ],
177
+ "monitoring_support": true,
178
+ "logging_configuration": "structured"
179
+ },
180
+ "execution_analysis": {
181
+ "success_factors": [
182
+ "Comprehensive node execution covering download, analysis, environment setup, generation, run, review, and finalize",
183
+ "Successful MCP plugin test with healthy service status"
184
+ ],
185
+ "failure_reasons": [],
186
+ "overall_assessment": "excellent",
187
+ "node_performance": {
188
+ "download_time": "Efficient download process as part of the workflow",
189
+ "analysis_time": "Completed successfully with detailed structural and dependency analysis",
190
+ "generation_time": "Efficient generation of MCP plugin files",
191
+ "test_time": "MCP plugin tests passed successfully, although original project tests did not run"
192
+ },
193
+ "resource_usage": {
194
+ "memory_efficiency": "Memory usage data not available, but no issues reported",
195
+ "cpu_efficiency": "CPU usage data not available, but no issues reported",
196
+ "disk_usage": "Disk usage appears efficient with no large files generated"
197
+ }
198
+ },
199
+ "technical_quality": {
200
+ "code_quality_score": 85,
201
+ "architecture_score": 80,
202
+ "performance_score": 75,
203
+ "maintainability_score": 75,
204
+ "security_score": 85,
205
+ "scalability_score": 80
206
+ }
207
+ }
openmc/source/.clang-format ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ Language: Cpp
3
+ # BasedOnStyle: Mozilla
4
+ AccessModifierOffset: -2
5
+ AlignAfterOpenBracket: DontAlign
6
+ AlignConsecutiveAssignments: false
7
+ AlignConsecutiveDeclarations: false
8
+ AlignEscapedNewlines: Right
9
+ AlignOperands: true
10
+ AlignTrailingComments: true
11
+ AllowAllParametersOfDeclarationOnNextLine: false
12
+ AllowShortBlocksOnASingleLine: false
13
+ AllowShortCaseLabelsOnASingleLine: false
14
+ AllowShortFunctionsOnASingleLine: Inline
15
+ AllowShortIfStatementsOnASingleLine: false
16
+ AllowShortLoopsOnASingleLine: false
17
+ AlwaysBreakAfterDefinitionReturnType: None
18
+ AlwaysBreakAfterReturnType: None
19
+ AlwaysBreakBeforeMultilineStrings: false
20
+ AlwaysBreakTemplateDeclarations: Yes
21
+ BinPackArguments: true
22
+ BinPackParameters: true
23
+ BraceWrapping:
24
+ AfterClass: false
25
+ AfterControlStatement: false
26
+ AfterEnum: false
27
+ AfterFunction: true
28
+ AfterNamespace: false
29
+ AfterObjCDeclaration: false
30
+ AfterStruct: false
31
+ AfterUnion: false
32
+ AfterExternBlock: false
33
+ BeforeCatch: false
34
+ BeforeElse: false
35
+ IndentBraces: false
36
+ SplitEmptyFunction: false
37
+ SplitEmptyRecord: false
38
+ SplitEmptyNamespace: true
39
+ BreakBeforeBinaryOperators: None
40
+ BreakBeforeBraces: Custom
41
+ BreakInheritanceList: BeforeColon
42
+ BreakBeforeTernaryOperators: true
43
+ BreakConstructorInitializers: BeforeColon
44
+ BreakStringLiterals: true
45
+ ColumnLimit: 80
46
+ CommentPragmas: '^ IWYU pragma:'
47
+ CompactNamespaces: false
48
+ ConstructorInitializerAllOnOneLineOrOnePerLine: false
49
+ ConstructorInitializerIndentWidth: 2
50
+ ContinuationIndentWidth: 2
51
+ Cpp11BracedListStyle: true
52
+ DerivePointerAlignment: false
53
+ DisableFormat: false
54
+ ExperimentalAutoDetectBinPacking: false
55
+ FixNamespaceComments: true
56
+ ForEachMacros:
57
+ - foreach
58
+ - Q_FOREACH
59
+ - BOOST_FOREACH
60
+ IncludeBlocks: Preserve
61
+ IncludeCategories:
62
+ - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
63
+ Priority: 2
64
+ - Regex: '^(<|"(gtest|gmock|isl|json)/)'
65
+ Priority: 3
66
+ - Regex: '.*'
67
+ Priority: 1
68
+ IncludeIsMainRegex: '(Test)?$'
69
+ IndentCaseLabels: false
70
+ IndentPPDirectives: None
71
+ IndentWidth: 2
72
+ IndentWrappedFunctionNames: false
73
+ KeepEmptyLinesAtTheStartOfBlocks: true
74
+ MacroBlockBegin: ''
75
+ MacroBlockEnd: ''
76
+ MaxEmptyLinesToKeep: 1
77
+ NamespaceIndentation: None
78
+ PenaltyBreakAssignment: 2
79
+ PenaltyBreakBeforeFirstCallParameter: 19
80
+ PenaltyBreakComment: 300
81
+ PenaltyBreakFirstLessLess: 120
82
+ PenaltyBreakString: 1000
83
+ PenaltyBreakTemplateDeclaration: 10
84
+ PenaltyExcessCharacter: 1000000
85
+ PenaltyReturnTypeOnItsOwnLine: 200
86
+ PointerAlignment: Left
87
+ QualifierAlignment: Left
88
+ ReflowComments: true
89
+ SortIncludes: true
90
+ SortUsingDeclarations: true
91
+ SpaceAfterCStyleCast: false
92
+ SpaceAfterTemplateKeyword: false
93
+ SpaceBeforeAssignmentOperators: true
94
+ SpaceBeforeCpp11BracedList: true
95
+ SpaceBeforeCtorInitializerColon: true
96
+ SpaceBeforeInheritanceColon: true
97
+ SpaceBeforeParens: ControlStatements
98
+ SpaceBeforeRangeBasedForLoopColon: true
99
+ SpaceInEmptyParentheses: false
100
+ SpacesBeforeTrailingComments: 1
101
+ SpacesInAngles: false
102
+ SpacesInContainerLiterals: true
103
+ SpacesInCStyleCastParentheses: false
104
+ SpacesInParentheses: false
105
+ SpacesInSquareBrackets: false
106
+ Standard: Cpp11
107
+ TabWidth: 8
108
+ UseTab: Never
109
+ ...
openmc/source/.readthedocs.yaml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: 2
2
+
3
+ build:
4
+ os: "ubuntu-24.04"
5
+ tools:
6
+ python: "3.12"
7
+ jobs:
8
+ post_checkout:
9
+ - git fetch --unshallow || true
10
+ sphinx:
11
+ configuration: docs/source/conf.py
12
+
13
+ python:
14
+ install:
15
+ - method: pip
16
+ path: .
17
+ extra_requirements:
18
+ - docs
openmc/source/AGENTS.md ADDED
@@ -0,0 +1,298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # OpenMC AI Coding Agent Instructions
2
+
3
+ ## Project Overview
4
+
5
+ OpenMC is a Monte Carlo particle transport code for simulating nuclear reactors,
6
+ fusion devices, or other systems with neutron/photon radiation. It's a hybrid
7
+ C++17/Python codebase where:
8
+ - **C++ core** (`src/`, `include/openmc/`) handles the computationally intensive transport simulation
9
+ - **Python API** (`openmc/`) provides user-facing model building, post-processing, and depletion capabilities
10
+ - **C API bindings** (`openmc/lib/`) wrap the C++ library via ctypes for runtime control
11
+
12
+ ## Architecture & Key Components
13
+
14
+ ### C++ Component Structure
15
+ - **Global vectors of unique_ptrs**: Core objects like `model::cells`, `model::universes`, `nuclides` are stored as `vector<unique_ptr<T>>` in nested namespaces (`openmc::model`, `openmc::simulation`, `openmc::settings`, `openmc::data`)
16
+ - **Custom container types**: OpenMC provides its own `vector`, `array`, `unique_ptr`, and `make_unique` in the `openmc::` namespace (defined in `vector.h`, `array.h`, `memory.h`). These are currently typedefs to `std::` equivalents but may become custom implementations for accelerator support. Always use `openmc::vector`, not `std::vector`.
17
+ - **Geometry systems**:
18
+ - **CSG (default)**: Arbitrarily complex Constructive Solid Geometry using `Surface`, `Region`, `Cell`, `Universe`, `Lattice`
19
+ - **DAGMC**: CAD-based geometry via Direct Accelerated Geometry Monte Carlo (optional, requires `OPENMC_USE_DAGMC`)
20
+ - **Unstructured mesh**: libMesh-based geometry (optional, requires `OPENMC_USE_LIBMESH`)
21
+ - **Particle tracking**: `Particle` class with `GeometryState` manages particle transport through geometry
22
+ - **Tallies**: Score quantities during simulation via `Filter` and `Tally` objects
23
+ - **Random ray solver**: Alternative deterministic method in `src/random_ray/`
24
+ - **Optional features**: DAGMC (CAD geometry), libMesh (unstructured mesh), MPI, all controlled by `#ifdef OPENMC_MPI`, etc.
25
+
26
+ ### Python Component Structure
27
+ - **ID management**: All geometry objects (Cell, Surface, Material, etc.) inherit from `IDManagerMixin` which auto-assigns unique integer IDs and tracks them via class-level `used_ids` and `next_id`
28
+ - **Input validation**: Extensive use of `openmc.checkvalue` module functions (`check_type`, `check_value`, `check_length`) for all setters
29
+ - **XML I/O**: Most classes implement `to_xml_element()` and `from_xml_element()` for serialization to OpenMC's XML input format
30
+ - **HDF5 output**: Post-simulation data in statepoint files read via `openmc.StatePoint`
31
+ - **Depletion**: `openmc.deplete` implements burnup via operator-splitting with various integrators (Predictor, CECM, etc.)
32
+ - **Nuclear Data**: `openmc.data` provides programmatic access to nuclear data files (ENDF, ACE, HDF5)
33
+
34
+ ## Git Branching Workflow
35
+
36
+ OpenMC uses a git flow branching model with two primary branches:
37
+
38
+ - **`develop` branch**: The main development branch where all ongoing development takes place. This is the **primary branch against which pull requests are submitted and merged**. This branch is not guaranteed to be stable and may contain work-in-progress features.
39
+ - **`master` branch**: The stable release branch containing the latest stable release of OpenMC. This branch only receives merges from `develop` when the development team decides a release should occur.
40
+
41
+ ### Instructions for Code Review
42
+
43
+ When analyzing code changes on a feature or bugfix branch (e.g., when a user asks "what do you think of these changes?"), **compare the branch changes against `develop`, not `master`**. Pull requests are submitted to merge into `develop`, so differences relative to `develop` represent the actual proposed changes. Comparing against `master` will include unrelated changes from other features that have already been merged to `develop`.
44
+
45
+ ### Workflow for contributors
46
+
47
+ 1. Create a feature/bugfix branch off `develop`
48
+ 2. Make changes and commit to the feature branch
49
+ 3. Open a pull request to merge the feature branch into `develop`
50
+ 4. A committer reviews and merges the PR into `develop`
51
+
52
+ ## Critical Build & Test Workflows
53
+
54
+ ### Build Dependencies
55
+ - **C++17 compiler**: GCC, Clang, or Intel
56
+ - **CMake** (3.16+): Required for configuring and building the C++ library
57
+ - **HDF5**: Required for cross section data and output file formats
58
+ - **libpng**: Used for generating visualization when OpenMC is run in plotting mode
59
+
60
+ Without CMake and HDF5, OpenMC cannot be compiled.
61
+
62
+ ### Building the C++ Library
63
+ ```bash
64
+ # Configure with CMake (from build/ directory)
65
+ cmake .. -DOPENMC_USE_MPI=ON -DOPENMC_USE_OPENMP=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
66
+
67
+ # Available CMake options (all default OFF except OPENMC_USE_OPENMP and OPENMC_BUILD_TESTS):
68
+ # -DOPENMC_USE_OPENMP=ON/OFF # OpenMP parallelism
69
+ # -DOPENMC_USE_MPI=ON/OFF # MPI support
70
+ # -DOPENMC_USE_DAGMC=ON/OFF # CAD geometry support
71
+ # -DOPENMC_USE_LIBMESH=ON/OFF # Unstructured mesh
72
+ # -DOPENMC_ENABLE_PROFILE=ON/OFF # Profiling flags
73
+ # -DOPENMC_ENABLE_COVERAGE=ON/OFF # Coverage analysis
74
+
75
+ # Build
76
+ make -j
77
+
78
+ # C++ unit tests (uses Catch2)
79
+ ctest
80
+ ```
81
+
82
+ ### Python Development
83
+ ```bash
84
+ # Install in development mode (requires building C++ library first)
85
+ pip install -e .
86
+
87
+ # Python tests (uses pytest)
88
+ pytest tests/unit_tests/ # Fast unit tests
89
+ pytest tests/regression_tests/ # Full regression suite (requires nuclear data)
90
+ ```
91
+
92
+ ### Nuclear Data Setup (CRITICAL for Running OpenMC)
93
+ Most tests require the NNDC HDF5 nuclear cross-section library.
94
+
95
+ **Important**: Check if `OPENMC_CROSS_SECTIONS` is already set in the user's
96
+ environment before downloading, as many users already have nuclear data
97
+ installed. Though do note that if this variable is present that it may point to
98
+ different cross section data and that the NNDC data is required for tests to
99
+ pass.
100
+
101
+ **If not already configured, download and setup:**
102
+ ```bash
103
+ # Download NNDC HDF5 cross section library (~800 MB compressed)
104
+ wget -q -O - https://anl.box.com/shared/static/teaup95cqv8s9nn56hfn7ku8mmelr95p.xz | tar -C $HOME -xJ
105
+
106
+ # Set environment variable (add to ~/.bashrc or ~/.zshrc for persistence)
107
+ export OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml
108
+ ```
109
+
110
+ **Alternative**: Use the provided download script (checks if data exists before downloading):
111
+ ```bash
112
+ bash tools/ci/download-xs.sh # Downloads both NNDC HDF5 and ENDF/B-VII.1 data
113
+ ```
114
+
115
+ Without this data, regression tests will fail with "No cross_sections.xml file
116
+ found" errors, or, in the case that alternative cross section data is configured
117
+ the tests will execute but will not pass. The `cross_sections.xml` file is an
118
+ index listing paths to individual HDF5 nuclear data files for each nuclide.
119
+
120
+ ## Testing Expectations
121
+
122
+ ### Environment Requirements
123
+
124
+ - **Data**: As described above, OpenMC's test suite requires OpenMC to be configured with NNDC data.
125
+ - **OpenMP Settings**: OpenMC's tests may fail is more than two OpenMP threads are used. The environment variable `OMP_NUM_THREADS=2` should be set to avoid sporadic test failures.
126
+ - **Executable configuration**: The OpenMC executable should compiled with debug symbols enabled.
127
+
128
+ ### C++ Tests
129
+ Located in `tests/cpp_unit_tests/`, use Catch2 framework. Run via `ctest` after building with `-DOPENMC_BUILD_TESTS=ON`.
130
+
131
+ ### Python Unit Tests
132
+ Located in `tests/unit_tests/`, these are fast, standalone tests that verify Python API functionality without running full simulations. Use standard pytest patterns:
133
+
134
+ **Categories**:
135
+ - **API validation**: Test object creation, property setters/getters, XML serialization (e.g., `test_material.py`, `test_cell.py`, `test_source.py`)
136
+ - **Data processing**: Test nuclear data handling, cross sections, depletion chains (e.g., `test_data_neutron.py`, `test_deplete_chain.py`)
137
+ - **Library bindings**: Test `openmc.lib` ctypes interface with `model.init_lib()`/`model.finalize_lib()` (e.g., `test_lib.py`)
138
+ - **Geometry operations**: Test bounding boxes, containment, lattice generation (e.g., `test_bounding_box.py`, `test_lattice.py`)
139
+
140
+ **Common patterns**:
141
+ - Use fixtures from `tests/unit_tests/conftest.py` (e.g., `uo2`, `water`, `sphere_model`)
142
+ - Test invalid inputs with `pytest.raises(ValueError)` or `pytest.raises(TypeError)`
143
+ - Use `run_in_tmpdir` fixture for tests that create files
144
+ - Tests with `openmc.lib` require calling `model.init_lib()` in try/finally with `model.finalize_lib()`
145
+
146
+ **Example**:
147
+ ```python
148
+ def test_material_properties():
149
+ m = openmc.Material()
150
+ m.add_nuclide('U235', 1.0)
151
+ assert 'U235' in m.nuclides
152
+
153
+ with pytest.raises(TypeError):
154
+ m.add_nuclide('H1', '1.0') # Invalid type
155
+ ```
156
+
157
+ Unit tests should be fast. For tests requiring simulation output, use regression tests instead.
158
+
159
+ ### Python Regression Tests
160
+ Regression tests compare OpenMC output against reference data. **Prefer using existing models from `openmc.examples` or those found in tests/unit_tests/conftest.py** (like `pwr_pin_cell()`, `pwr_assembly()`, `slab_mg()`) rather than building from scratch.
161
+
162
+ **Test Harness Types** (in `tests/testing_harness.py`):
163
+ - **PyAPITestHarness**: Standard harness for Python API tests. Compares `inputs_true.dat` (XML hash) and `results_true.dat` (statepoint k-eff and tally values). Requires `model.xml` generation.
164
+ - **HashedPyAPITestHarness**: Like PyAPITestHarness but hashes the results for compact comparison
165
+ - **TolerantPyAPITestHarness**: For tests with floating-point non-associativity (e.g., random ray solver with single precision). Uses relative tolerance comparisons.
166
+ - **WeightWindowPyAPITestHarness**: Compares weight window bounds from `weight_windows.h5`
167
+ - **CollisionTrackTestHarness**: Compares collision track data from `collision_track.h5` against `collision_track_true.h5`
168
+ - **TestHarness**: Base harness for XML-based tests (no Python model building)
169
+ - **PlotTestHarness**: Compares plot output files (PNG or voxel HDF5)
170
+ - **CMFDTestHarness**: Specialized for CMFD acceleration tests
171
+ - **ParticleRestartTestHarness**: Tests particle restart functionality
172
+
173
+ Almost all cases use either `PyAPITestHarness` or `HashedPyAPITestHarness`
174
+
175
+ **Example Test**:
176
+ ```python
177
+ from openmc.examples import pwr_pin_cell
178
+ from tests.testing_harness import PyAPITestHarness
179
+
180
+ def test_my_feature():
181
+ model = pwr_pin_cell()
182
+ model.settings.particles = 1000 # Modify to exercise feature
183
+ harness = PyAPITestHarness('statepoint.10.h5', model)
184
+ harness.main()
185
+ ```
186
+
187
+ **Workflow**: Create `test.py` and `__init__.py` in `tests/regression_tests/my_test/`, run `pytest --update` to generate reference files (`inputs_true.dat`, `results_true.dat`, etc.), then verify with `pytest` without `--update`. Test results should be generated with a debug build (`-DCMAKE_BUILD_TYPE=Debug`)
188
+
189
+ **Critical**: When modifying OpenMC code, regenerate affected test references with `pytest --update` and commit updated reference files.
190
+
191
+ ### Test Configuration
192
+
193
+ `pytest.ini` sets: `python_files = test*.py`, `python_classes = NoThanks` (disables class-based test collection).
194
+
195
+ ### Testing Options
196
+
197
+ For builds of OpenMC with MPI enabled, the `--mpi` flag should be passed to the test suite to ensure that appropriate tests are executed using two MPI processes.
198
+
199
+ The entire test suite can be executed with OpenMC running in event-based mode (instead of the default history-based mode) by providing the `--event` flag to the `pytest` command.
200
+
201
+ ## Cross-Language Boundaries
202
+
203
+ The C API (defined in `include/openmc/capi.h`) exposes C++ functionality to Python via ctypes bindings in `openmc/lib/`. Example:
204
+ ```cpp
205
+ // C++ API in capi.h
206
+ extern "C" int openmc_run();
207
+
208
+ // Python binding in openmc/lib/core.py
209
+ _dll.openmc_run.restype = c_int
210
+ def run():
211
+ _dll.openmc_run()
212
+ ```
213
+
214
+ When modifying C++ public APIs, update corresponding ctypes signatures in `openmc/lib/*.py`.
215
+
216
+ ## Code Style & Conventions
217
+
218
+ ### C++ Style (enforced by .clang-format)
219
+ OpenMC generally tries to follow C++ core guidelines where possible
220
+ (https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) and follow
221
+ modern C++ practices (e.g. RAII) whenever possible.
222
+
223
+ - **Naming**:
224
+ - Classes: `CamelCase` (e.g., `HexLattice`)
225
+ - Functions/methods: `snake_case` (e.g., `get_indices`)
226
+ - Variables: `snake_case` with trailing underscore for class members (e.g., `n_particles_`, `energy_`)
227
+ - Constants: `UPPER_SNAKE_CASE` (e.g., `SQRT_PI`)
228
+ - **Namespaces**: All code in `openmc::` namespace, global state in sub-namespaces
229
+ - **Include order**: Related header first, then C/C++ stdlib, third-party libs, local headers
230
+ - **Comments**: C++-style (`//`) only, never C-style (`/* */`)
231
+ - **Standard**: C++17 features allowed
232
+ - **Formatting**: Run `clang-format` (version 15) before committing; install via `tools/dev/install-commit-hooks.sh`
233
+
234
+ ### Python Style
235
+ - **PEP8** compliant
236
+ - **Docstrings**: numpydoc format for all public functions/methods
237
+ - **Type hints**: Use sparingly, primarily for complex signatures
238
+ - **Path handling**: Use `pathlib.Path` for filesystem operations, accept `str | os.PathLike` in function arguments
239
+ - **Dependencies**: Core dependencies only (numpy, scipy, h5py, pandas, matplotlib, lxml, ipython, uncertainties, setuptools, endf). Other packages must be optional
240
+ - **Python version**: Minimum 3.11 (as of Nov 2025)
241
+
242
+ ### ID Management Pattern (Python)
243
+ When creating geometry objects, IDs can be auto-assigned or explicit:
244
+ ```python
245
+ # Auto-assigned ID
246
+ cell = openmc.Cell() # Gets next available ID
247
+
248
+ # Explicit ID
249
+ cell = openmc.Cell(id=10) # Warning if ID already used
250
+
251
+ # Reset all IDs (useful in test fixtures)
252
+ openmc.reset_auto_ids()
253
+ ```
254
+
255
+ ### Input Validation Pattern (Python)
256
+ All setters use checkvalue functions:
257
+ ```python
258
+ import openmc.checkvalue as cv
259
+
260
+ @property
261
+ def temperature(self):
262
+ return self._temperature
263
+
264
+ @temperature.setter
265
+ def temperature(self, temp):
266
+ cv.check_type('temperature', temp, Real)
267
+ cv.check_greater_than('temperature', temp, 0.0)
268
+ self._temperature = temp
269
+ ```
270
+
271
+ ### Working with HDF5 Files
272
+ C++ uses custom HDF5 wrappers in `src/hdf5_interface.cpp`. Python uses h5py directly. Statepoint format version is `VERSION_STATEPOINT` in `include/openmc/constants.h`.
273
+
274
+ ### Conditional Compilation
275
+ Check for optional features:
276
+ ```cpp
277
+ #ifdef OPENMC_MPI
278
+ // MPI-specific code
279
+ #endif
280
+
281
+ #ifdef OPENMC_DAGMC
282
+ // DAGMC-specific code
283
+ #endif
284
+ ```
285
+
286
+ ## Documentation
287
+
288
+ - **User docs**: Sphinx documentation in `docs/source/` hosted at https://docs.openmc.org
289
+ - **C++ docs**: Doxygen-style comments with `\brief`, `\param` tags
290
+ - **Python docs**: numpydoc format docstrings
291
+
292
+ ## Common Pitfalls
293
+
294
+ 1. **Forgetting nuclear data**: Tests fail without `OPENMC_CROSS_SECTIONS` environment variable
295
+ 2. **ID conflicts**: Python objects with duplicate IDs trigger `IDWarning`, use `reset_auto_ids()` between tests
296
+ 3. **MPI builds**: Code must work with and without MPI; use `#ifdef OPENMC_MPI` guards
297
+ 4. **Path handling**: Use `pathlib.Path` in new Python code, not `os.path`
298
+ 5. **Clang-format version**: CI uses version 15; other versions may produce different formatting
openmc/source/CITATION.cff ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ title: OpenMC
4
+ authors:
5
+ - family-names: Romano
6
+ given-names: Paul K.
7
+ orcid: "https://orcid.org/0000-0002-1147-045X"
8
+ - family-names: Shriwise
9
+ given-names: Patrick C.
10
+ orcid: "https://orcid.org/0000-0002-3979-7665"
11
+ - family-names: Shimwell
12
+ given-names: Jonathan
13
+ orcid: "https://orcid.org/0000-0001-6909-0946"
14
+ - family-names: Harper
15
+ given-names: Sterling
16
+ - family-names: Boyd
17
+ given-names: Will
18
+ - family-names: Nelson
19
+ given-names: Adam G.
20
+ orcid: "https://orcid.org/0000-0002-3614-0676"
21
+ - family-names: Tramm
22
+ given-names: John R.
23
+ orcid: "https://orcid.org/0000-0002-5397-4402"
24
+ - family-names: Ridley
25
+ given-names: Gavin
26
+ orcid: "https://orcid.org/0000-0003-1635-8042"
27
+ - family-names: Johnson
28
+ given-names: Andrew
29
+ orcid: "https://orcid.org/0000-0003-2125-8775"
30
+ - family-names: Peterson
31
+ given-names: Ethan E.
32
+ orcid: "https://orcid.org/0000-0002-5694-7194"
33
+ - family-names: Herman
34
+ given-names: Bryan R.
35
+ preferred-citation:
36
+ authors:
37
+ - family-names: Romano
38
+ given-names: Paul K.
39
+ orcid: "https://orcid.org/0000-0002-1147-045X"
40
+ - family-names: Horelik
41
+ given-names: Nicholas E.
42
+ - family-names: Herman
43
+ given-names: Bryan R.
44
+ - family-names: Nelson
45
+ given-names: Adam G.
46
+ orcid: "https://orcid.org/0000-0002-3614-0676"
47
+ - family-names: Forget
48
+ given-names: Benoit
49
+ orcid: "https://orcid.org/0000-0003-1459-7672"
50
+ - family-names: Smith
51
+ given-names: Kord
52
+ contact:
53
+ - family-names: Romano
54
+ given-names: Paul K.
55
+ orcid: "https://orcid.org/0000-0002-1147-045X"
56
+ doi: 10.1016/j.anucene.2014.07.048
57
+ issn: 0306-4549
58
+ volume: 82
59
+ journal: Annals of Nuclear Energy
60
+ publisher:
61
+ name: Elsevier
62
+ start: 90
63
+ end: 97
64
+ year: 2015
65
+ month: 8
66
+ title: "OpenMC: A state-of-the-art Monte Carlo code for research and development"
67
+ type: article
68
+ url: "https://doi.org/10.1016/j.anucene.2014.07.048"
openmc/source/CMakeLists.txt ADDED
@@ -0,0 +1,607 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
2
+ project(openmc C CXX)
3
+
4
+ # Set module path
5
+ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
6
+
7
+ include(GetVersionFromGit)
8
+
9
+ # Output version information
10
+ message(STATUS "OpenMC version: ${OPENMC_VERSION}")
11
+ message(STATUS "OpenMC dev state: ${OPENMC_DEV_STATE}")
12
+ message(STATUS "OpenMC commit hash: ${OPENMC_COMMIT_HASH}")
13
+ message(STATUS "OpenMC commit count: ${OPENMC_COMMIT_COUNT}")
14
+
15
+ # Generate version.h
16
+ configure_file(include/openmc/version.h.in "${CMAKE_BINARY_DIR}/include/openmc/version.h" @ONLY)
17
+
18
+ # Setup output directories
19
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
20
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
21
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
22
+
23
+ # Enable correct usage of CXX_EXTENSIONS
24
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.22)
25
+ cmake_policy(SET CMP0128 NEW)
26
+ endif()
27
+
28
+ #===============================================================================
29
+ # Command line options
30
+ #===============================================================================
31
+
32
+ option(OPENMC_USE_OPENMP "Enable shared-memory parallelism with OpenMP" ON)
33
+ option(OPENMC_BUILD_TESTS "Build tests" ON)
34
+ option(OPENMC_ENABLE_PROFILE "Compile with profiling flags" OFF)
35
+ option(OPENMC_ENABLE_COVERAGE "Compile with coverage analysis flags" OFF)
36
+ option(OPENMC_USE_DAGMC "Enable support for DAGMC (CAD) geometry" OFF)
37
+ option(OPENMC_USE_LIBMESH "Enable support for libMesh unstructured mesh tallies" OFF)
38
+ option(OPENMC_USE_MPI "Enable MPI" OFF)
39
+ option(OPENMC_USE_UWUW "Enable UWUW" OFF)
40
+ option(OPENMC_FORCE_VENDORED_LIBS "Explicitly use submodules defined in 'vendor'" OFF)
41
+
42
+ message(STATUS "OPENMC_USE_OPENMP ${OPENMC_USE_OPENMP}")
43
+ message(STATUS "OPENMC_BUILD_TESTS ${OPENMC_BUILD_TESTS}")
44
+ message(STATUS "OPENMC_ENABLE_PROFILE ${OPENMC_ENABLE_PROFILE}")
45
+ message(STATUS "OPENMC_ENABLE_COVERAGE ${OPENMC_ENABLE_COVERAGE}")
46
+ message(STATUS "OPENMC_USE_DAGMC ${OPENMC_USE_DAGMC}")
47
+ message(STATUS "OPENMC_USE_LIBMESH ${OPENMC_USE_LIBMESH}")
48
+ message(STATUS "OPENMC_USE_MPI ${OPENMC_USE_MPI}")
49
+ message(STATUS "OPENMC_USE_UWUW ${OPENMC_USE_UWUW}")
50
+ message(STATUS "OPENMC_FORCE_VENDORED_LIBS ${OPENMC_FORCE_VENDORED_LIBS}")
51
+
52
+ # Warnings for deprecated options
53
+ foreach(OLD_OPT IN ITEMS "openmp" "profile" "coverage" "dagmc" "libmesh")
54
+ if(DEFINED ${OLD_OPT})
55
+ string(TOUPPER ${OLD_OPT} OPT_UPPER)
56
+ if ("${OLD_OPT}" STREQUAL "profile" OR "${OLD_OPT}" STREQUAL "coverage")
57
+ set(NEW_OPT_PREFIX "OPENMC_ENABLE")
58
+ else()
59
+ set(NEW_OPT_PREFIX "OPENMC_USE")
60
+ endif()
61
+ message(WARNING "The OpenMC CMake option '${OLD_OPT}' has been deprecated. "
62
+ "Its value will be ignored. "
63
+ "Please use '-D${NEW_OPT_PREFIX}_${OPT_UPPER}=${${OLD_OPT}}' instead.")
64
+ unset(${OLD_OPT} CACHE)
65
+ endif()
66
+ endforeach()
67
+
68
+ foreach(OLD_BLD in ITEMS "debug" "optimize")
69
+ if(DEFINED ${OLD_BLD})
70
+ if("${OLD_BLD}" STREQUAL "debug")
71
+ set(BLD_VAR "Debug")
72
+ else()
73
+ set(BLD_VAR "Release")
74
+ endif()
75
+ message(WARNING "The OpenMC CMake option '${OLD_BLD}' has been deprecated. "
76
+ "Its value will be ignored. "
77
+ "OpenMC now uses the CMAKE_BUILD_TYPE variable to set the build mode. "
78
+ "Please use '-DCMAKE_BUILD_TYPE=${BLD_VAR}' instead.")
79
+ unset(${OLD_BLD} CACHE)
80
+ endif()
81
+ endforeach()
82
+
83
+ #===============================================================================
84
+ # Set a default build configuration if not explicitly specified
85
+ #===============================================================================
86
+
87
+ if(NOT CMAKE_BUILD_TYPE)
88
+ message(STATUS "No build type selected, defaulting to RelWithDebInfo")
89
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build" FORCE)
90
+ endif()
91
+
92
+ #===============================================================================
93
+ # OpenMP for shared-memory parallelism (and GPU support some day!)
94
+ #===============================================================================
95
+
96
+ if(OPENMC_USE_OPENMP)
97
+ find_package(OpenMP REQUIRED)
98
+ endif()
99
+
100
+ #===============================================================================
101
+ # MPI for distributed-memory parallelism
102
+ #===============================================================================
103
+
104
+ if(OPENMC_USE_MPI)
105
+ find_package(MPI REQUIRED)
106
+ endif()
107
+
108
+ #===============================================================================
109
+ # Helper macro for finding a dependency
110
+ #===============================================================================
111
+
112
+ macro(find_package_write_status pkg)
113
+ find_package(${pkg} QUIET NO_SYSTEM_ENVIRONMENT_PATH)
114
+ if(${pkg}_FOUND)
115
+ message(STATUS "Found ${pkg}: ${${pkg}_DIR} (version ${${pkg}_VERSION})")
116
+ else()
117
+ message(STATUS "Did not find ${pkg}, will use submodule instead")
118
+ endif()
119
+ endmacro()
120
+
121
+ #===============================================================================
122
+ # DAGMC Geometry Support - need DAGMC/MOAB
123
+ #===============================================================================
124
+
125
+ if(OPENMC_USE_DAGMC)
126
+ find_package(DAGMC REQUIRED PATH_SUFFIXES lib/cmake)
127
+ if (${DAGMC_VERSION} VERSION_LESS 3.2.0)
128
+ message(FATAL_ERROR "Discovered DAGMC Version: ${DAGMC_VERSION}."
129
+ "Please update DAGMC to version 3.2.0 or greater.")
130
+ endif()
131
+ message(STATUS "Found DAGMC: ${DAGMC_DIR} (version ${DAGMC_VERSION})")
132
+
133
+ # Check if UWUW is needed and available
134
+ if(OPENMC_USE_UWUW AND NOT DAGMC_BUILD_UWUW)
135
+ message(FATAL_ERROR "UWUW is enabled but DAGMC was not configured with UWUW.")
136
+ endif()
137
+ endif()
138
+
139
+ #===============================================================================
140
+ # libMesh Unstructured Mesh Support
141
+ #===============================================================================
142
+
143
+ if(OPENMC_USE_LIBMESH)
144
+ find_package(LIBMESH REQUIRED)
145
+ endif()
146
+
147
+ #===============================================================================
148
+ # libpng
149
+ #===============================================================================
150
+
151
+ find_package(PNG)
152
+
153
+ #===============================================================================
154
+ # HDF5 for binary output
155
+ #===============================================================================
156
+
157
+ # Unfortunately FindHDF5.cmake will always prefer a serial HDF5 installation
158
+ # over a parallel installation if both appear on the user's PATH. To get around
159
+ # this, we check for the environment variable HDF5_ROOT and if it exists, use it
160
+ # to check whether its a parallel version.
161
+
162
+ if(NOT DEFINED HDF5_PREFER_PARALLEL)
163
+ if(DEFINED ENV{HDF5_ROOT} AND EXISTS $ENV{HDF5_ROOT}/bin/h5pcc)
164
+ set(HDF5_PREFER_PARALLEL TRUE)
165
+ else()
166
+ set(HDF5_PREFER_PARALLEL FALSE)
167
+ endif()
168
+ endif()
169
+
170
+ find_package(HDF5 REQUIRED COMPONENTS C HL)
171
+
172
+ # Remove HDF5 transitive dependencies that are system libraries
173
+ list(FILTER HDF5_LIBRARIES EXCLUDE REGEX ".*lib(pthread|dl|m).*")
174
+ message(STATUS "HDF5 Libraries: ${HDF5_LIBRARIES}")
175
+
176
+ if(HDF5_IS_PARALLEL)
177
+ if(NOT OPENMC_USE_MPI)
178
+ message(FATAL_ERROR "Parallel HDF5 was detected, but MPI was not enabled.\
179
+ To use parallel HDF5, OpenMC needs to be built with MPI support by passing\
180
+ -DOPENMC_USE_MPI=ON when calling cmake.")
181
+ endif()
182
+ message(STATUS "Using parallel HDF5")
183
+ endif()
184
+
185
+ # Version 1.12 of HDF5 deprecates the H5Oget_info_by_idx() interface.
186
+ # Thus, we give these flags to allow usage of the old interface in newer
187
+ # versions of HDF5.
188
+ if(${HDF5_VERSION} VERSION_GREATER_EQUAL 1.12.0)
189
+ list(APPEND cxxflags -DH5Oget_info_by_idx_vers=1 -DH5O_info_t_vers=1)
190
+ endif()
191
+
192
+ #===============================================================================
193
+ # Set compile/link flags based on which compiler is being used
194
+ #===============================================================================
195
+
196
+ # Skip for Visual Studio which has its own configurations through GUI
197
+ if(NOT MSVC)
198
+
199
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
200
+
201
+ if(OPENMC_ENABLE_PROFILE)
202
+ list(APPEND cxxflags -g -fno-omit-frame-pointer)
203
+ endif()
204
+
205
+ if(OPENMC_ENABLE_COVERAGE)
206
+ list(APPEND cxxflags --coverage)
207
+ list(APPEND ldflags --coverage)
208
+ endif()
209
+
210
+ # Show flags being used
211
+ message(STATUS "OpenMC C++ flags: ${cxxflags}")
212
+ message(STATUS "OpenMC Linker flags: ${ldflags}")
213
+
214
+ endif()
215
+
216
+ #===============================================================================
217
+ # Update git submodules as needed
218
+ #===============================================================================
219
+ if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
220
+ option(GIT_SUBMODULE "Check submodules during build" ON)
221
+ if(GIT_SUBMODULE)
222
+ message(STATUS "Submodule update")
223
+ execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
224
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
225
+ RESULT_VARIABLE GIT_SUBMOD_RESULT)
226
+ if(NOT GIT_SUBMOD_RESULT EQUAL 0)
227
+ message(FATAL_ERROR "git submodule update --init failed with \
228
+ ${GIT_SUBMOD_RESULT}, please checkout submodules")
229
+ endif()
230
+ endif()
231
+ endif()
232
+
233
+ # Check to see if submodules exist (by checking one)
234
+ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/vendor/pugixml/CMakeLists.txt")
235
+ message(FATAL_ERROR "The git submodules were not downloaded! GIT_SUBMODULE was \
236
+ turned off or failed. Please update submodules and try again.")
237
+ endif()
238
+
239
+ #===============================================================================
240
+ # pugixml library
241
+ #===============================================================================
242
+
243
+ if(OPENMC_FORCE_VENDORED_LIBS)
244
+ add_subdirectory(vendor/pugixml)
245
+ set_target_properties(pugixml PROPERTIES CXX_STANDARD 14 CXX_EXTENSIONS OFF)
246
+ else()
247
+ find_package_write_status(pugixml)
248
+ if (NOT pugixml_FOUND)
249
+ add_subdirectory(vendor/pugixml)
250
+ set_target_properties(pugixml PROPERTIES CXX_STANDARD 14 CXX_EXTENSIONS OFF)
251
+ endif()
252
+ endif()
253
+
254
+ #===============================================================================
255
+ # {fmt} library
256
+ #===============================================================================
257
+
258
+ if(OPENMC_FORCE_VENDORED_LIBS)
259
+ set(FMT_INSTALL ON CACHE BOOL "Generate the install target.")
260
+ add_subdirectory(vendor/fmt)
261
+ else()
262
+ find_package_write_status(fmt)
263
+ if (NOT fmt_FOUND)
264
+ set(FMT_INSTALL ON CACHE BOOL "Generate the install target.")
265
+ add_subdirectory(vendor/fmt)
266
+ endif()
267
+ endif()
268
+
269
+ #===============================================================================
270
+ # xtensor header-only library
271
+ #===============================================================================
272
+
273
+ if(OPENMC_FORCE_VENDORED_LIBS)
274
+ add_subdirectory(vendor/xtl)
275
+ set(xtl_DIR ${CMAKE_CURRENT_BINARY_DIR}/vendor/xtl)
276
+ add_subdirectory(vendor/xtensor)
277
+ else()
278
+ find_package_write_status(xtensor)
279
+ if (NOT xtensor_FOUND)
280
+ add_subdirectory(vendor/xtl)
281
+ set(xtl_DIR ${CMAKE_CURRENT_BINARY_DIR}/vendor/xtl)
282
+ add_subdirectory(vendor/xtensor)
283
+ endif()
284
+ endif()
285
+
286
+ #===============================================================================
287
+ # Catch2 library
288
+ #===============================================================================
289
+
290
+ if(OPENMC_BUILD_TESTS)
291
+ if (OPENMC_FORCE_VENDORED_LIBS)
292
+ add_subdirectory(vendor/Catch2)
293
+ else()
294
+ find_package_write_status(Catch2)
295
+ if (NOT Catch2_FOUND)
296
+ add_subdirectory(vendor/Catch2)
297
+ endif()
298
+ endif()
299
+ endif()
300
+
301
+ #===============================================================================
302
+ # RPATH information
303
+ #===============================================================================
304
+
305
+ # Provide install directory variables as defined by GNU coding standards
306
+ include(GNUInstallDirs)
307
+
308
+ # This block of code ensures that dynamic libraries can be found via the RPATH
309
+ # whether the executable is the original one from the build directory or the
310
+ # installed one in CMAKE_INSTALL_PREFIX. Ref:
311
+ # https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling
312
+
313
+ # use, i.e. don't skip the full RPATH for the build tree
314
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
315
+
316
+ # when building, don't use the install RPATH already
317
+ # (but later on when installing)
318
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
319
+
320
+ # add the automatically determined parts of the RPATH
321
+ # which point to directories outside the build tree to the install RPATH
322
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
323
+
324
+ # the RPATH to be used when installing, but only if it's not a system directory
325
+ list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemDir)
326
+ if("${isSystemDir}" STREQUAL "-1")
327
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
328
+ endif()
329
+
330
+ #===============================================================================
331
+ # libopenmc
332
+ #===============================================================================
333
+
334
+ list(APPEND libopenmc_SOURCES
335
+ src/bank.cpp
336
+ src/boundary_condition.cpp
337
+ src/bremsstrahlung.cpp
338
+ src/cell.cpp
339
+ src/chain.cpp
340
+ src/cmfd_solver.cpp
341
+ src/collision_track.cpp
342
+ src/cross_sections.cpp
343
+ src/dagmc.cpp
344
+ src/distribution.cpp
345
+ src/distribution_angle.cpp
346
+ src/distribution_energy.cpp
347
+ src/distribution_multi.cpp
348
+ src/distribution_spatial.cpp
349
+ src/eigenvalue.cpp
350
+ src/endf.cpp
351
+ src/error.cpp
352
+ src/event.cpp
353
+ src/file_utils.cpp
354
+ src/finalize.cpp
355
+ src/geometry.cpp
356
+ src/geometry_aux.cpp
357
+ src/hdf5_interface.cpp
358
+ src/ifp.cpp
359
+ src/initialize.cpp
360
+ src/lattice.cpp
361
+ src/material.cpp
362
+ src/math_functions.cpp
363
+ src/mcpl_interface.cpp
364
+ src/mesh.cpp
365
+ src/message_passing.cpp
366
+ src/mgxs.cpp
367
+ src/mgxs_interface.cpp
368
+ src/ncrystal_interface.cpp
369
+ src/ncrystal_load.cpp
370
+ src/nuclide.cpp
371
+ src/output.cpp
372
+ src/particle.cpp
373
+ src/particle_data.cpp
374
+ src/particle_restart.cpp
375
+ src/particle_type.cpp
376
+ src/photon.cpp
377
+ src/physics.cpp
378
+ src/physics_common.cpp
379
+ src/physics_mg.cpp
380
+ src/plot.cpp
381
+ src/position.cpp
382
+ src/progress_bar.cpp
383
+ src/random_dist.cpp
384
+ src/random_lcg.cpp
385
+ src/random_ray/random_ray_simulation.cpp
386
+ src/random_ray/random_ray.cpp
387
+ src/random_ray/flat_source_domain.cpp
388
+ src/random_ray/linear_source_domain.cpp
389
+ src/random_ray/moment_matrix.cpp
390
+ src/random_ray/source_region.cpp
391
+ src/reaction.cpp
392
+ src/reaction_product.cpp
393
+ src/scattdata.cpp
394
+ src/secondary_correlated.cpp
395
+ src/secondary_kalbach.cpp
396
+ src/secondary_nbody.cpp
397
+ src/secondary_thermal.cpp
398
+ src/secondary_uncorrelated.cpp
399
+ src/settings.cpp
400
+ src/simulation.cpp
401
+ src/source.cpp
402
+ src/state_point.cpp
403
+ src/string_utils.cpp
404
+ src/summary.cpp
405
+ src/surface.cpp
406
+ src/tallies/derivative.cpp
407
+ src/tallies/filter.cpp
408
+ src/tallies/filter_azimuthal.cpp
409
+ src/tallies/filter_cell.cpp
410
+ src/tallies/filter_cell_instance.cpp
411
+ src/tallies/filter_cellborn.cpp
412
+ src/tallies/filter_cellfrom.cpp
413
+ src/tallies/filter_collision.cpp
414
+ src/tallies/filter_delayedgroup.cpp
415
+ src/tallies/filter_distribcell.cpp
416
+ src/tallies/filter_energy.cpp
417
+ src/tallies/filter_energyfunc.cpp
418
+ src/tallies/filter_legendre.cpp
419
+ src/tallies/filter_material.cpp
420
+ src/tallies/filter_materialfrom.cpp
421
+ src/tallies/filter_mesh.cpp
422
+ src/tallies/filter_meshborn.cpp
423
+ src/tallies/filter_meshmaterial.cpp
424
+ src/tallies/filter_meshsurface.cpp
425
+ src/tallies/filter_mu.cpp
426
+ src/tallies/filter_musurface.cpp
427
+ src/tallies/filter_parent_nuclide.cpp
428
+ src/tallies/filter_particle.cpp
429
+ src/tallies/filter_polar.cpp
430
+ src/tallies/filter_sph_harm.cpp
431
+ src/tallies/filter_sptl_legendre.cpp
432
+ src/tallies/filter_surface.cpp
433
+ src/tallies/filter_time.cpp
434
+ src/tallies/filter_universe.cpp
435
+ src/tallies/filter_weight.cpp
436
+ src/tallies/filter_zernike.cpp
437
+ src/tallies/tally.cpp
438
+ src/tallies/tally_scoring.cpp
439
+ src/tallies/trigger.cpp
440
+ src/thermal.cpp
441
+ src/timer.cpp
442
+ src/track_output.cpp
443
+ src/universe.cpp
444
+ src/urr.cpp
445
+ src/volume_calc.cpp
446
+ src/weight_windows.cpp
447
+ src/wmp.cpp
448
+ src/xml_interface.cpp
449
+ src/xsdata.cpp)
450
+
451
+ # Add bundled external dependencies
452
+ list(APPEND libopenmc_SOURCES
453
+ src/external/quartic_solver.cpp
454
+ src/external/Faddeeva.cc)
455
+
456
+ # For Visual Studio compilers
457
+ if(MSVC)
458
+ # Use static library (otherwise explicit symbol portings are needed)
459
+ add_library(libopenmc STATIC ${libopenmc_SOURCES})
460
+
461
+ # To use the shared HDF5 libraries on Windows, the H5_BUILT_AS_DYNAMIC_LIB
462
+ # compile definition must be specified.
463
+ target_compile_definitions(libopenmc PRIVATE -DH5_BUILT_AS_DYNAMIC_LIB)
464
+ else()
465
+ add_library(libopenmc SHARED ${libopenmc_SOURCES})
466
+ endif()
467
+
468
+ add_library(OpenMC::libopenmc ALIAS libopenmc)
469
+
470
+ # Avoid vs error lnk1149 :output filename matches input filename
471
+ if(NOT MSVC)
472
+ set_target_properties(libopenmc PROPERTIES OUTPUT_NAME openmc)
473
+ endif()
474
+
475
+ target_include_directories(libopenmc
476
+ PUBLIC
477
+ $<INSTALL_INTERFACE:include>
478
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
479
+ ${HDF5_INCLUDE_DIRS}
480
+ )
481
+
482
+ # Set compile flags
483
+ target_compile_options(libopenmc PRIVATE ${cxxflags})
484
+
485
+ # Add include directory for configured version file
486
+ target_include_directories(libopenmc
487
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
488
+
489
+ if (HDF5_IS_PARALLEL)
490
+ target_compile_definitions(libopenmc PRIVATE -DPHDF5)
491
+ endif()
492
+ if (OPENMC_USE_MPI)
493
+ target_compile_definitions(libopenmc PUBLIC -DOPENMC_MPI)
494
+ endif()
495
+
496
+ # target_link_libraries treats any arguments starting with - but not -l as
497
+ # linker flags. Thus, we can pass both linker flags and libraries together.
498
+ target_link_libraries(libopenmc ${ldflags} ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}
499
+ xtensor fmt::fmt ${CMAKE_DL_LIBS})
500
+
501
+ if(TARGET pugixml::pugixml)
502
+ target_link_libraries(libopenmc pugixml::pugixml)
503
+ else()
504
+ target_link_libraries(libopenmc pugixml)
505
+ endif()
506
+
507
+ if(OPENMC_USE_DAGMC)
508
+ target_compile_definitions(libopenmc PRIVATE OPENMC_DAGMC_ENABLED)
509
+ target_link_libraries(libopenmc dagmc-shared)
510
+
511
+ if(OPENMC_USE_UWUW)
512
+ target_compile_definitions(libopenmc PRIVATE OPENMC_UWUW_ENABLED)
513
+ target_link_libraries(libopenmc uwuw-shared)
514
+ endif()
515
+ elseif(OPENMC_USE_UWUW)
516
+ set(OPENMC_USE_UWUW OFF)
517
+ message(FATAL_ERROR "DAGMC must be enabled when UWUW is enabled.")
518
+ endif()
519
+
520
+ if(OPENMC_USE_LIBMESH)
521
+ target_compile_definitions(libopenmc PRIVATE OPENMC_LIBMESH_ENABLED)
522
+ target_link_libraries(libopenmc PkgConfig::LIBMESH)
523
+ endif()
524
+
525
+ if (PNG_FOUND)
526
+ target_compile_definitions(libopenmc PRIVATE USE_LIBPNG)
527
+ target_link_libraries(libopenmc PNG::PNG)
528
+ endif()
529
+
530
+ if (OPENMC_USE_OPENMP)
531
+ target_link_libraries(libopenmc OpenMP::OpenMP_CXX)
532
+ endif()
533
+
534
+ if (OPENMC_USE_MPI)
535
+ target_link_libraries(libopenmc MPI::MPI_CXX)
536
+ endif()
537
+
538
+ if (OPENMC_BUILD_TESTS)
539
+ # Add cpp tests directory
540
+ include(CTest)
541
+ add_subdirectory(tests/cpp_unit_tests)
542
+ endif()
543
+
544
+ #===============================================================================
545
+ # Log build info that this executable can report later
546
+ #===============================================================================
547
+ target_compile_definitions(libopenmc PRIVATE BUILD_TYPE=${CMAKE_BUILD_TYPE})
548
+ target_compile_definitions(libopenmc PRIVATE COMPILER_ID=${CMAKE_CXX_COMPILER_ID})
549
+ target_compile_definitions(libopenmc PRIVATE COMPILER_VERSION=${CMAKE_CXX_COMPILER_VERSION})
550
+ if (OPENMC_ENABLE_PROFILE)
551
+ target_compile_definitions(libopenmc PRIVATE PROFILINGBUILD)
552
+ endif()
553
+ if (OPENMC_ENABLE_COVERAGE)
554
+ target_compile_definitions(libopenmc PRIVATE COVERAGEBUILD)
555
+ endif()
556
+
557
+ #===============================================================================
558
+ # openmc executable
559
+ #===============================================================================
560
+ add_executable(openmc src/main.cpp)
561
+ add_executable(OpenMC::openmc ALIAS openmc)
562
+ target_compile_options(openmc PRIVATE ${cxxflags})
563
+ target_include_directories(openmc PRIVATE ${CMAKE_BINARY_DIR}/include)
564
+ target_link_libraries(openmc libopenmc)
565
+
566
+ # Ensure C++17 standard is used and turn off GNU extensions
567
+ target_compile_features(openmc PUBLIC cxx_std_17)
568
+ target_compile_features(libopenmc PUBLIC cxx_std_17)
569
+ set_target_properties(openmc libopenmc PROPERTIES CXX_EXTENSIONS OFF)
570
+
571
+ #===============================================================================
572
+ # Python package
573
+ #===============================================================================
574
+
575
+ add_custom_command(TARGET libopenmc POST_BUILD
576
+ COMMAND ${CMAKE_COMMAND} -E copy
577
+ $<TARGET_FILE:libopenmc>
578
+ ${CMAKE_CURRENT_SOURCE_DIR}/openmc/lib/$<TARGET_FILE_NAME:libopenmc>
579
+ COMMENT "Copying libopenmc to Python module directory")
580
+
581
+ #===============================================================================
582
+ # Install executable, scripts, manpage, license
583
+ #===============================================================================
584
+
585
+ configure_file(cmake/OpenMCConfig.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake" @ONLY)
586
+ configure_file(cmake/OpenMCConfigVersion.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake" @ONLY)
587
+
588
+ set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/OpenMC)
589
+ install(TARGETS openmc libopenmc
590
+ EXPORT openmc-targets
591
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
592
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
593
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
594
+ )
595
+ install(EXPORT openmc-targets
596
+ FILE OpenMCTargets.cmake
597
+ NAMESPACE OpenMC::
598
+ DESTINATION ${INSTALL_CONFIGDIR})
599
+
600
+ install(FILES
601
+ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
602
+ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake"
603
+ DESTINATION ${INSTALL_CONFIGDIR})
604
+ install(FILES man/man1/openmc.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
605
+ install(FILES LICENSE DESTINATION "${CMAKE_INSTALL_DOCDIR}" RENAME copyright)
606
+ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
607
+ install(FILES "${CMAKE_BINARY_DIR}/include/openmc/version.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/openmc)
openmc/source/CODEOWNERS ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Data interface
2
+ openmc/data/ @paulromano
3
+
4
+ # Python bindings to C/C++ API
5
+ openmc/lib/ @paulromano
6
+
7
+ # Depletion
8
+ openmc/deplete/ @paulromano
9
+ tests/regression_tests/deplete/ @paulromano
10
+ tests/unit_tests/test_deplete_*.py @paulromano
11
+
12
+ # MG-related functionality
13
+ openmc/mgxs_library.py @nelsonag
14
+ src/mgxs.cpp @nelsonag
15
+ src/mgxs_interface.cpp @nelsonag
16
+ src/physics_mg.cpp @nelsonag
17
+ src/scattdata.cpp @nelsonag
18
+ src/xsdata.cpp @nelsonag
19
+
20
+ # CMFD
21
+ openmc/cmfd.py @shikhar413
22
+ src/cmfd_solver.cpp @shikhar413
23
+
24
+ # DAGMC
25
+ src/dagmc.cpp @pshriwise
26
+ tests/regression_tests/dagmc/ @pshriwise
27
+ tests/unit_tests/dagmc/ @pshriwise
28
+
29
+ # Weight windows
30
+ openmc/weight_windows.py @pshriwise
31
+ openmc/lib/weight_windows.py @pshriwise
32
+ src/weight_windows.py @pshriwise
33
+ tests/unit_tests/weightwindows/ @pshriwise
34
+
35
+ # Photon transport
36
+ openmc/data/BREMX.DAT @amandalund
37
+ openmc/data/compton_profiles.h5 @amandalund
38
+ openmc/data/photon.py @amandalund
39
+ src/photon.cpp @amandalund
40
+ src/bremsstrahlung.cpp @amandalund
41
+ tests/regression_tests/photon_production/ @amandalund
42
+ tests/regression_tests/photon_source/ @amandalund
43
+
44
+ # RCP and TRISOs
45
+ openmc/model/triso.py @amandalund
46
+ tests/regression_tests/triso/ @amandalund
47
+ tests/unit_tests/test_model_triso.py @amandalund
48
+
49
+ # Geometry plotting
50
+ src/plot.cpp @pshriwise
51
+ openmc/lib/plot.py @pshriwise
52
+
53
+ # Resonance covariance
54
+ openmc/data/resonance_covariance.py @icmeyer
55
+
56
+ # Docker
57
+ Dockerfile @shimwell
58
+
59
+ # Random ray
60
+ src/random_ray/ @jtramm
61
+
62
+ # NCrystal interface
63
+ src/ncrystal_interface.cpp @marquezj @tkittel
64
+ src/ncrystal_load.cpp @marquezj @tkittel
65
+
66
+ # MCPL interface
67
+ src/mcpl_interface.cpp @ebknudsen
openmc/source/CODE_OF_CONDUCT.md ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at openmc@anl.gov. All complaints will
59
+ be reviewed and investigated and will result in a response that is deemed
60
+ necessary and appropriate to the circumstances. The project team is obligated to
61
+ maintain confidentiality with regard to the reporter of an incident. However,
62
+ note that some project team members may have a legal obligation to report
63
+ certain forms of harassment because of their affiliation (for example, staff and
64
+ faculty at universities in the United States). Further details of specific
65
+ enforcement policies may be posted separately.
66
+
67
+ Project maintainers who do not follow or enforce the Code of Conduct in good
68
+ faith may face temporary or permanent repercussions as determined by other
69
+ members of the project's leadership.
70
+
71
+ ## Attribution
72
+
73
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
74
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
75
+
76
+ [homepage]: https://www.contributor-covenant.org
openmc/source/CONTRIBUTING.md ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contributing to OpenMC
2
+
3
+ Welcome, and thank you for considering contributing to OpenMC! We look forward
4
+ to welcoming new members to the community and will do our best to help you get
5
+ up to speed.
6
+
7
+ ## Code of Conduct
8
+
9
+ Participants in the OpenMC project are expected to follow and uphold the [Code
10
+ of Conduct](CODE_OF_CONDUCT.md). Please report any unacceptable behavior to
11
+ openmc@anl.gov.
12
+
13
+ ## Resources
14
+
15
+ - [GitHub Repository](https://github.com/openmc-dev/openmc)
16
+ - [Documentation](https://docs.openmc.org/en/latest)
17
+ - [Discussion Forum](https://openmc.discourse.group)
18
+ - [Slack Community](https://openmc.slack.com/signup) (If you don't see your
19
+ domain listed, contact openmc@anl.gov)
20
+
21
+ ## How to Report Bugs
22
+
23
+ OpenMC is hosted on GitHub and all bugs are reported and tracked through the
24
+ [Issues](https://github.com/openmc-dev/openmc/issues) listed on GitHub.
25
+
26
+ ## How to Suggest Enhancements
27
+
28
+ We welcome suggestions for new features or enhancements to the code and
29
+ encourage you to submit them as Issues on GitHub. However, it's important to
30
+ recognize that our development team is relatively small and does not have
31
+ unlimited time to devote to new feature suggestions. If you are interested in
32
+ working on the feature you are requesting, indicate so in the issue and the
33
+ development team will be happy to discuss it.
34
+
35
+ ## How to Submit Changes
36
+
37
+ All changes to OpenMC happen through pull requests. For a full overview of the
38
+ process, see the developer's guide section on [Contributing to
39
+ OpenMC](https://docs.openmc.org/en/latest/devguide/contributing.html).
40
+
41
+ ## Code Style
42
+
43
+ Before you run off to make changes to the code, please have a look at our [style
44
+ guide](https://docs.openmc.org/en/latest/devguide/styleguide.html), which
45
+ is used when reviewing new contributions.
openmc/source/Dockerfile ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # To build with OpenMC and by default this Dockerfile builds the master branch of OpenMC.
2
+ # docker build -t openmc .
3
+
4
+ # To build with OpenMC develop branch
5
+ # docker build -t openmc_develop --build-arg openmc_branch=develop .
6
+
7
+ # To build with OpenMC and DAGMC enabled
8
+ # docker build -t openmc_dagmc --build-arg build_dagmc=on --build-arg compile_cores=4 .
9
+
10
+ # To build with OpenMC and Libmesh enabled
11
+ # docker build -t openmc_libmesh --build-arg build_libmesh=on --build-arg compile_cores=4 .
12
+
13
+ # To build with both DAGMC and Libmesh enabled
14
+ # docker build -t openmc_dagmc_libmesh --build-arg build_dagmc=on --build-arg build_libmesh=on --build-arg compile_cores=4 .
15
+
16
+ # sudo docker run image_name:tag_name or ID with no tag sudo docker run ID number
17
+
18
+
19
+ # global ARG as these ARGS are used in multiple stages
20
+ # By default one core is used to compile
21
+ ARG compile_cores=1
22
+
23
+ # By default this Dockerfile builds OpenMC without DAGMC and LIBMESH support
24
+ ARG build_dagmc=off
25
+ ARG build_libmesh=off
26
+
27
+ FROM ubuntu:24.04 AS dependencies
28
+
29
+ ARG compile_cores
30
+ ARG build_dagmc
31
+ ARG build_libmesh
32
+
33
+ # Set default value of HOME to /root
34
+ ENV HOME=/root
35
+
36
+ # Embree variables
37
+ ENV EMBREE_TAG='v4.3.1'
38
+ ENV EMBREE_REPO='https://github.com/embree/embree'
39
+ ENV EMBREE_INSTALL_DIR=$HOME/EMBREE/
40
+
41
+ # MOAB variables
42
+ ENV MOAB_TAG='5.5.1'
43
+ ENV MOAB_REPO='https://bitbucket.org/fathomteam/moab/'
44
+
45
+ # Double-Down variables
46
+ ENV DD_TAG='v1.1.0'
47
+ ENV DD_REPO='https://github.com/pshriwise/double-down'
48
+ ENV DD_INSTALL_DIR=$HOME/Double_down
49
+
50
+ # DAGMC variables
51
+ ENV DAGMC_BRANCH='v3.2.4'
52
+ ENV DAGMC_REPO='https://github.com/svalinn/DAGMC'
53
+ ENV DAGMC_INSTALL_DIR=$HOME/DAGMC/
54
+
55
+ # LIBMESH variables
56
+ ENV LIBMESH_TAG='v1.7.1'
57
+ ENV LIBMESH_REPO='https://github.com/libMesh/libmesh'
58
+ ENV LIBMESH_INSTALL_DIR=$HOME/LIBMESH
59
+
60
+ # NJOY variables
61
+ ENV NJOY_REPO='https://github.com/njoy/NJOY2016'
62
+
63
+ # Setup environment variables for Docker image
64
+ ENV LD_LIBRARY_PATH=${DAGMC_INSTALL_DIR}/lib:$LD_LIBRARY_PATH \
65
+ OPENMC_ENDF_DATA=/root/endf-b-vii.1 \
66
+ DEBIAN_FRONTEND=noninteractive
67
+
68
+ # Install and update dependencies from Debian package manager
69
+ RUN apt-get update -y && \
70
+ apt-get upgrade -y && \
71
+ apt-get install -y \
72
+ python3-pip python-is-python3 wget git build-essential cmake \
73
+ mpich libmpich-dev libhdf5-serial-dev libhdf5-mpich-dev \
74
+ libpng-dev python3-venv && \
75
+ apt-get autoremove
76
+
77
+ # create virtual enviroment to avoid externally managed environment error
78
+ RUN python3 -m venv openmc_venv
79
+ ENV PATH=/openmc_venv/bin:$PATH
80
+
81
+ # Update system-provided pip
82
+ RUN pip install --upgrade pip
83
+
84
+ # Clone and install NJOY2016
85
+ RUN cd $HOME \
86
+ && git clone --single-branch --depth 1 ${NJOY_REPO} \
87
+ && cd NJOY2016 \
88
+ && mkdir build \
89
+ && cd build \
90
+ && cmake -Dstatic=on .. \
91
+ && make 2>/dev/null -j${compile_cores} install \
92
+ && rm -rf $HOME/NJOY2016
93
+
94
+
95
+ RUN if [ "$build_dagmc" = "on" ]; then \
96
+ # Install addition packages required for DAGMC
97
+ apt-get -y install libeigen3-dev libnetcdf-dev libtbb-dev libglfw3-dev \
98
+ && pip install --upgrade numpy \
99
+ && pip install --no-cache-dir setuptools cython \
100
+ # Clone and install EMBREE
101
+ && mkdir -p $HOME/EMBREE && cd $HOME/EMBREE \
102
+ && git clone --single-branch -b ${EMBREE_TAG} --depth 1 ${EMBREE_REPO} \
103
+ && mkdir build && cd build \
104
+ && cmake ../embree \
105
+ -DCMAKE_INSTALL_PREFIX=${EMBREE_INSTALL_DIR} \
106
+ -DEMBREE_MAX_ISA=NONE \
107
+ -DEMBREE_ISA_SSE42=ON \
108
+ -DEMBREE_ISPC_SUPPORT=OFF \
109
+ && make 2>/dev/null -j${compile_cores} install \
110
+ && rm -rf ${EMBREE_INSTALL_DIR}/build ${EMBREE_INSTALL_DIR}/embree ; \
111
+ # Clone and install MOAB
112
+ mkdir -p $HOME/MOAB && cd $HOME/MOAB \
113
+ && git clone --single-branch -b ${MOAB_TAG} --depth 1 ${MOAB_REPO} \
114
+ && mkdir build && cd build \
115
+ && cmake ../moab -DCMAKE_BUILD_TYPE=Release \
116
+ -DENABLE_HDF5=ON \
117
+ -DENABLE_NETCDF=ON \
118
+ -DBUILD_SHARED_LIBS=OFF \
119
+ -DENABLE_FORTRAN=OFF \
120
+ -DENABLE_BLASLAPACK=OFF \
121
+ && make 2>/dev/null -j${compile_cores} install \
122
+ && cmake ../moab \
123
+ -DENABLE_PYMOAB=ON \
124
+ -DBUILD_SHARED_LIBS=ON \
125
+ && make 2>/dev/null -j${compile_cores} install \
126
+ && cd pymoab && bash install.sh \
127
+ && python setup.py install \
128
+ && python -c "import pymoab" \
129
+ && rm -rf $HOME/MOAB ; \
130
+ # Clone and install Double-Down
131
+ mkdir -p $HOME/Double_down && cd $HOME/Double_down \
132
+ && git clone --single-branch -b ${DD_TAG} --depth 1 ${DD_REPO} \
133
+ && mkdir build && cd build \
134
+ && cmake ../double-down -DCMAKE_INSTALL_PREFIX=${DD_INSTALL_DIR} \
135
+ -DMOAB_DIR=/usr/local \
136
+ -DEMBREE_DIR=${EMBREE_INSTALL_DIR} \
137
+ && make 2>/dev/null -j${compile_cores} install \
138
+ && rm -rf ${DD_INSTALL_DIR}/build ${DD_INSTALL_DIR}/double-down ; \
139
+ # Clone and install DAGMC
140
+ mkdir -p $HOME/DAGMC && cd $HOME/DAGMC \
141
+ && git clone --single-branch -b ${DAGMC_BRANCH} --depth 1 ${DAGMC_REPO} \
142
+ && mkdir build && cd build \
143
+ && cmake ../DAGMC -DBUILD_TALLY=ON \
144
+ -DCMAKE_INSTALL_PREFIX=${DAGMC_INSTALL_DIR} \
145
+ -DMOAB_DIR=/usr/local \
146
+ -DDOUBLE_DOWN=ON \
147
+ -DDOUBLE_DOWN_DIR=${DD_INSTALL_DIR} \
148
+ -DCMAKE_PREFIX_PATH=${DD_INSTALL_DIR}/lib \
149
+ -DBUILD_STATIC_LIBS=OFF \
150
+ && make 2>/dev/null -j${compile_cores} install \
151
+ && rm -rf ${DAGMC_INSTALL_DIR}/DAGMC ${DAGMC_INSTALL_DIR}/build ; \
152
+ fi
153
+
154
+
155
+ RUN if [ "$build_libmesh" = "on" ]; then \
156
+ # Install addition packages required for LIBMESH
157
+ apt-get -y install m4 libnetcdf-dev libpnetcdf-dev \
158
+ # Install LIBMESH
159
+ && mkdir -p $HOME/LIBMESH && cd $HOME/LIBMESH \
160
+ && git clone --shallow-submodules --recurse-submodules --single-branch -b ${LIBMESH_TAG} --depth 1 ${LIBMESH_REPO} \
161
+ && mkdir build && cd build \
162
+ && ../libmesh/configure \
163
+ --prefix=${LIBMESH_INSTALL_DIR} CXX=mpicxx CC=mpicc FC=mpifort F77=mpif77 \
164
+ --enable-exodus \
165
+ --enable-mpi \
166
+ --enable-silent-rules \
167
+ --enable-unique-id \
168
+ --disable-eigen \
169
+ --disable-fortran \
170
+ --disable-lapack \
171
+ --disable-examples \
172
+ --disable-warnings \
173
+ --disable-maintainer-mode \
174
+ --disable-metaphysicl \
175
+ --with-methods="opt" \
176
+ --without-gdb-command \
177
+ --with-cxx-std-min=2014 \
178
+ && make 2>/dev/null -j${compile_cores} install \
179
+ && rm -rf ${LIBMESH_INSTALL_DIR}/build ${LIBMESH_INSTALL_DIR}/libmesh ; \
180
+ fi
181
+
182
+ FROM dependencies AS build
183
+
184
+ ENV HOME=/root
185
+
186
+ ARG openmc_branch=master
187
+ ENV OPENMC_REPO='https://github.com/openmc-dev/openmc'
188
+
189
+ ARG compile_cores
190
+ ARG build_dagmc
191
+ ARG build_libmesh
192
+
193
+ ENV DAGMC_INSTALL_DIR=$HOME/DAGMC/
194
+ ENV LIBMESH_INSTALL_DIR=$HOME/LIBMESH
195
+
196
+ # clone and install openmc
197
+ RUN mkdir -p ${HOME}/OpenMC && cd ${HOME}/OpenMC \
198
+ && git clone --shallow-submodules --recurse-submodules --single-branch -b ${openmc_branch} ${OPENMC_REPO} \
199
+ && mkdir build && cd build ; \
200
+ if [ ${build_dagmc} = "on" ] && [ ${build_libmesh} = "on" ]; then \
201
+ cmake ../openmc \
202
+ -DCMAKE_CXX_COMPILER=mpicxx \
203
+ -DOPENMC_USE_MPI=on \
204
+ -DHDF5_PREFER_PARALLEL=on \
205
+ -DOPENMC_USE_DAGMC=on \
206
+ -DOPENMC_USE_LIBMESH=on \
207
+ -DCMAKE_PREFIX_PATH="${DAGMC_INSTALL_DIR};${LIBMESH_INSTALL_DIR}" ; \
208
+ fi ; \
209
+ if [ ${build_dagmc} = "on" ] && [ ${build_libmesh} = "off" ]; then \
210
+ cmake ../openmc \
211
+ -DCMAKE_CXX_COMPILER=mpicxx \
212
+ -DOPENMC_USE_MPI=on \
213
+ -DHDF5_PREFER_PARALLEL=on \
214
+ -DOPENMC_USE_DAGMC=ON \
215
+ -DCMAKE_PREFIX_PATH=${DAGMC_INSTALL_DIR} ; \
216
+ fi ; \
217
+ if [ ${build_dagmc} = "off" ] && [ ${build_libmesh} = "on" ]; then \
218
+ cmake ../openmc \
219
+ -DCMAKE_CXX_COMPILER=mpicxx \
220
+ -DOPENMC_USE_MPI=on \
221
+ -DHDF5_PREFER_PARALLEL=on \
222
+ -DOPENMC_USE_LIBMESH=on \
223
+ -DCMAKE_PREFIX_PATH=${LIBMESH_INSTALL_DIR} ; \
224
+ fi ; \
225
+ if [ ${build_dagmc} = "off" ] && [ ${build_libmesh} = "off" ]; then \
226
+ cmake ../openmc \
227
+ -DCMAKE_CXX_COMPILER=mpicxx \
228
+ -DOPENMC_USE_MPI=on \
229
+ -DHDF5_PREFER_PARALLEL=on ; \
230
+ fi ; \
231
+ make 2>/dev/null -j${compile_cores} install \
232
+ && cd ../openmc && pip install .[test,depletion-mpi] \
233
+ && python -c "import openmc"
234
+
235
+ FROM build AS release
236
+
237
+ ENV HOME=/root
238
+ ENV OPENMC_CROSS_SECTIONS=/root/nndc_hdf5/cross_sections.xml
239
+
240
+ # Download cross sections (NNDC and WMP) and ENDF data needed by test suite
241
+ RUN ${HOME}/OpenMC/openmc/tools/ci/download-xs.sh
openmc/source/LICENSE ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2011-2025 Massachusetts Institute of Technology, UChicago Argonne
2
+ LLC, and OpenMC contributors
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ this software and associated documentation files (the "Software"), to deal in
6
+ the Software without restriction, including without limitation the rights to
7
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ the Software, and to permit persons to whom the Software is furnished to do so,
9
+ subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
openmc/source/MANIFEST.in ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ include CMakeLists.txt
2
+ include LICENSE
3
+ include CODE_OF_CONDUCT.md
4
+ include CODEOWNERS
5
+ include CONTRIBUTING.md
6
+ include Dockerfile
7
+ include schemas.xml
8
+ include pyproject.toml
9
+ include pytest.ini
10
+ include docs/source/_templates/layout.html
11
+ global-include *.cmake
12
+ global-include *.cmake.in
13
+ global-include *.rst
14
+ recursive-include docs *.css
15
+ recursive-include docs *.dia
16
+ recursive-include docs *.png
17
+ recursive-include docs *.py
18
+ recursive-include docs *.svg
19
+ recursive-include docs *.tex
20
+ recursive-include docs *.txt
21
+ recursive-include docs Makefile
22
+ recursive-include examples *.cpp
23
+ recursive-include examples *.py
24
+ recursive-include examples *.xml
25
+ recursive-include include *.h
26
+ recursive-include include *.h.in
27
+ recursive-include include *.hh
28
+ recursive-include man *.1
29
+ recursive-include src *.cc
30
+ recursive-include src *.cpp
31
+ recursive-include src *.rnc
32
+ recursive-include src *.rng
33
+ recursive-include tests *.dat
34
+ recursive-include tests *.h5
35
+ recursive-include tests *.h5m
36
+ recursive-include tests *.py
37
+ recursive-include tests *.xml
38
+ recursive-include vendor CMakeLists.txt
39
+ recursive-include vendor *.cc
40
+ recursive-include vendor *.cpp
41
+ recursive-include vendor *.h
42
+ recursive-include vendor *.hh
43
+ recursive-include vendor *.hpp
44
+ recursive-include vendor *.pc.in
45
+ recursive-include vendor *.natvis
46
+ prune docs/build
47
+ prune docs/source/pythonapi/generated/
openmc/source/README.md ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # OpenMC Monte Carlo Particle Transport Code
2
+
3
+ [![License](https://img.shields.io/badge/license-MIT-green)](https://docs.openmc.org/en/latest/license.html)
4
+ [![GitHub Actions build status (Linux)](https://github.com/openmc-dev/openmc/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/openmc-dev/openmc/actions/workflows/ci.yml)
5
+ [![Code Coverage](https://coveralls.io/repos/github/openmc-dev/openmc/badge.svg?branch=develop)](https://coveralls.io/github/openmc-dev/openmc?branch=develop)
6
+ [![dockerhub-publish-develop-dagmc](https://github.com/openmc-dev/openmc/workflows/dockerhub-publish-develop-dagmc/badge.svg)](https://github.com/openmc-dev/openmc/actions?query=workflow%3Adockerhub-publish-develop-dagmc)
7
+ [![dockerhub-publish-develop](https://github.com/openmc-dev/openmc/workflows/dockerhub-publish-develop/badge.svg)](https://github.com/openmc-dev/openmc/actions?query=workflow%3Adockerhub-publish-develop)
8
+ [![conda-pacakge](https://anaconda.org/conda-forge/openmc/badges/version.svg)](https://anaconda.org/conda-forge/openmc)
9
+
10
+ The OpenMC project aims to provide a fully-featured Monte Carlo particle
11
+ transport code based on modern methods. It is a constructive solid geometry,
12
+ continuous-energy transport code that uses HDF5 format cross sections. The
13
+ project started under the Computational Reactor Physics Group at MIT.
14
+
15
+ Complete documentation on the usage of OpenMC is hosted on Read the Docs (both
16
+ for the [latest release](https://docs.openmc.org/en/stable/) and
17
+ [developmental](https://docs.openmc.org/en/latest/) version). If you are
18
+ interested in the project, or would like to help and contribute, please get in
19
+ touch on the OpenMC [discussion forum](https://openmc.discourse.group/).
20
+
21
+ ## Installation
22
+
23
+ Detailed [installation
24
+ instructions](https://docs.openmc.org/en/stable/usersguide/install.html)
25
+ can be found in the User's Guide.
26
+
27
+ ## Citing
28
+
29
+ If you use OpenMC in your research, please consider giving proper attribution by
30
+ citing the following publication:
31
+
32
+ - Paul K. Romano, Nicholas E. Horelik, Bryan R. Herman, Adam G. Nelson, Benoit
33
+ Forget, and Kord Smith, "[OpenMC: A State-of-the-Art Monte Carlo Code for
34
+ Research and Development](https://doi.org/10.1016/j.anucene.2014.07.048),"
35
+ *Ann. Nucl. Energy*, **82**, 90--97 (2015).
36
+
37
+ ## Troubleshooting
38
+
39
+ If you run into problems compiling, installing, or running OpenMC, first check
40
+ the [Troubleshooting
41
+ section](https://docs.openmc.org/en/stable/usersguide/troubleshoot.html) in the
42
+ User's Guide. If you are not able to find a solution to your problem there,
43
+ please post to the [discussion forum](https://openmc.discourse.group/).
44
+
45
+ ## Reporting Bugs
46
+
47
+ OpenMC is hosted on GitHub and all bugs are reported and tracked through the
48
+ [Issues](https://github.com/openmc-dev/openmc/issues) feature on GitHub.
49
+ However, GitHub Issues should not be used for common troubleshooting purposes.
50
+ If you are having trouble installing the code or getting your model to run
51
+ properly, you should first send a message to the [discussion
52
+ forum](https://openmc.discourse.group/). If it turns out your issue really is a
53
+ bug in the code, an issue will then be created on GitHub. If you want to request
54
+ that a feature be added to the code, you may create an Issue on github.
55
+
56
+ ## License
57
+
58
+ OpenMC is distributed under the MIT/X
59
+ [license](https://docs.openmc.org/en/stable/license.html).
openmc/source/__init__.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ openmc Project Package Initialization File
4
+ """
openmc/source/cmake/Modules/FindLIBMESH.cmake ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Finds the libMesh installation using CMake's PkgConfig
2
+ # module and creates a libmesh imported target
3
+
4
+ if(${CMAKE_VERSION} VERSION_LESS 3.12.0)
5
+ message(FATAL_ERROR "OpenMC builds with libMesh support require CMake version 3.12.0 or greater.")
6
+ endif()
7
+
8
+ set(LIBMESH_PC_FILE libmesh)
9
+
10
+ # if the METHOD variable is present, check specifically for
11
+ # the libMesh .pc file for that build type
12
+ if(DEFINED ENV{METHOD})
13
+ set(LIBMESH_PC_FILE libmesh-$ENV{METHOD})
14
+ message(STATUS "Using environment variable METHOD to determine libMesh build: ${LIBMESH_PC_FILE}")
15
+ endif()
16
+
17
+ find_package(PkgConfig REQUIRED)
18
+
19
+ set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE)
20
+ pkg_check_modules(LIBMESH REQUIRED ${LIBMESH_PC_FILE}>=1.7.0 IMPORTED_TARGET)
21
+ pkg_get_variable(LIBMESH_PREFIX ${LIBMESH_PC_FILE} prefix)
openmc/source/cmake/Modules/GetVersionFromGit.cmake ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # GetVersionFromGit.cmake
2
+ # Standalone script to retrieve versioning information from Git or .git_archival.txt.
3
+ # Customizable for any project by setting variables before including this file.
4
+
5
+ # Configurable variables:
6
+ # - VERSION_PREFIX: Prefix for version tags (default: "v").
7
+ # - VERSION_SUFFIX: Suffix for version tags (default: "[~+-]([a-zA-Z0-9]+)").
8
+ # - VERSION_REGEX: Regex to extract version (default: "(?[0-9]+\\.[0-9]+\\.[0-9]+)").
9
+ # - ARCHIVAL_FILE: Path to .git_archival.txt (default: "${CMAKE_SOURCE_DIR}/.git_archival.txt").
10
+ # - DESCRIBE_NAME_KEY: Key for describe name in .git_archival.txt (default: "describe-name: ").
11
+ # - COMMIT_HASH_KEY: Key for commit hash in .git_archival.txt (default: "commit: ").
12
+
13
+ # Default Format Example:
14
+ # 1.2.3 v1.2.3 v1.2.3-rc1
15
+
16
+ set(VERSION_PREFIX "v" CACHE STRING "Prefix used in version tags")
17
+ set(VERSION_SUFFIX "[~+-]([a-zA-Z0-9]+)" CACHE STRING "Suffix used in version tags")
18
+ set(VERSION_REGEX "?([0-9]+\\.[0-9]+\\.[0-9]+)" CACHE STRING "Regex for extracting version")
19
+ set(ARCHIVAL_FILE "${CMAKE_SOURCE_DIR}/.git_archival.txt" CACHE STRING "Path to .git_archival.txt")
20
+ set(DESCRIBE_NAME_KEY "describe-name: " CACHE STRING "Key for describe name in .git_archival.txt")
21
+ set(COMMIT_HASH_KEY "commit: " CACHE STRING "Key for commit hash in .git_archival.txt")
22
+
23
+
24
+ # Combine prefix and regex
25
+ set(VERSION_REGEX_WITH_PREFIX "^${VERSION_PREFIX}${VERSION_REGEX}")
26
+
27
+ # Find Git
28
+ find_package(Git)
29
+
30
+ # Attempt to retrieve version from Git
31
+ if(EXISTS "${CMAKE_SOURCE_DIR}/.git" AND GIT_FOUND)
32
+ message(STATUS "Using git describe for versioning")
33
+
34
+ # Extract the version string
35
+ execute_process(
36
+ COMMAND git describe --tags --dirty
37
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
38
+ OUTPUT_VARIABLE VERSION_STRING
39
+ OUTPUT_STRIP_TRAILING_WHITESPACE
40
+ ERROR_QUIET
41
+ )
42
+
43
+ # If no tags are found, set version to 0 and show a warning
44
+ if(VERSION_STRING STREQUAL "")
45
+ set(VERSION_STRING "0.0.0")
46
+ message(WARNING
47
+ "No git tags found. Version set to 0.0.0.\n"
48
+ "Run 'git fetch --tags' to ensure proper versioning.\n"
49
+ "For more information, see OpenMC developer documentation."
50
+ )
51
+ endif()
52
+
53
+ # Extract the commit hash
54
+ execute_process(
55
+ COMMAND git rev-parse HEAD
56
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
57
+ OUTPUT_VARIABLE COMMIT_HASH
58
+ OUTPUT_STRIP_TRAILING_WHITESPACE
59
+ )
60
+ else()
61
+ message(STATUS "Using archival file for versioning: ${ARCHIVAL_FILE}")
62
+ if(EXISTS "${ARCHIVAL_FILE}")
63
+ file(READ "${ARCHIVAL_FILE}" ARCHIVAL_CONTENT)
64
+
65
+ # Extract the describe-name line
66
+ string(REGEX MATCH "${DESCRIBE_NAME_KEY}([^\\n]+)" VERSION_STRING "${ARCHIVAL_CONTENT}")
67
+ if(VERSION_STRING MATCHES "${DESCRIBE_NAME_KEY}(.*)")
68
+ set(VERSION_STRING "${CMAKE_MATCH_1}")
69
+ else()
70
+ message(FATAL_ERROR "Could not extract version from ${ARCHIVAL_FILE}")
71
+ endif()
72
+
73
+ # Extract the commit hash
74
+ string(REGEX MATCH "${COMMIT_HASH_KEY}([a-f0-9]+)" COMMIT_HASH "${ARCHIVAL_CONTENT}")
75
+ if(COMMIT_HASH MATCHES "${COMMIT_HASH_KEY}([a-f0-9]+)")
76
+ set(COMMIT_HASH "${CMAKE_MATCH_1}")
77
+ else()
78
+ message(FATAL_ERROR "Could not extract commit hash from ${ARCHIVAL_FILE}")
79
+ endif()
80
+ else()
81
+ message(FATAL_ERROR "Neither git describe nor ${ARCHIVAL_FILE} is available for versioning.")
82
+ endif()
83
+ endif()
84
+
85
+ # Ensure version string format
86
+ if(VERSION_STRING MATCHES "${VERSION_REGEX_WITH_PREFIX}")
87
+ set(VERSION_NO_SUFFIX "${CMAKE_MATCH_1}")
88
+ else()
89
+ message(FATAL_ERROR "Invalid version format: Missing base version in ${VERSION_STRING}")
90
+ endif()
91
+
92
+ # Check for development state
93
+ if(VERSION_STRING MATCHES "-([0-9]+)-g([0-9a-f]+)")
94
+ set(DEV_STATE "true")
95
+ set(COMMIT_COUNT "${CMAKE_MATCH_1}")
96
+ string(REGEX REPLACE "-([0-9]+)-g([0-9a-f]+)" "" VERSION_WITHOUT_META "${VERSION_STRING}")
97
+ else()
98
+ set(DEV_STATE "false")
99
+ set(VERSION_WITHOUT_META "${VERSION_STRING}")
100
+ endif()
101
+
102
+ # Split and set version components
103
+ string(REPLACE "." ";" VERSION_LIST "${VERSION_NO_SUFFIX}")
104
+ list(GET VERSION_LIST 0 VERSION_MAJOR)
105
+ list(GET VERSION_LIST 1 VERSION_MINOR)
106
+ list(GET VERSION_LIST 2 VERSION_PATCH)
107
+
108
+ # Increment patch number for dev versions
109
+ if(DEV_STATE)
110
+ math(EXPR VERSION_PATCH "${VERSION_PATCH} + 1")
111
+ endif()
112
+
113
+ # Export variables
114
+ set(OPENMC_VERSION_MAJOR "${VERSION_MAJOR}")
115
+ set(OPENMC_VERSION_MINOR "${VERSION_MINOR}")
116
+ set(OPENMC_VERSION_PATCH "${VERSION_PATCH}")
117
+ set(OPENMC_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
118
+ set(OPENMC_COMMIT_HASH "${COMMIT_HASH}")
119
+ set(OPENMC_DEV_STATE "${DEV_STATE}")
120
+ set(OPENMC_COMMIT_COUNT "${COMMIT_COUNT}")
openmc/source/cmake/OpenMCConfig.cmake.in ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ get_filename_component(OpenMC_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
2
+
3
+ # Compute the install prefix from this file's location
4
+ get_filename_component(_OPENMC_PREFIX "${OpenMC_CMAKE_DIR}/../../.." ABSOLUTE)
5
+
6
+ find_package(fmt CONFIG REQUIRED HINTS ${_OPENMC_PREFIX})
7
+ find_package(pugixml CONFIG REQUIRED HINTS ${_OPENMC_PREFIX})
8
+ find_package(xtl CONFIG REQUIRED HINTS ${_OPENMC_PREFIX})
9
+ find_package(xtensor CONFIG REQUIRED HINTS ${_OPENMC_PREFIX})
10
+ if(@OPENMC_USE_DAGMC@)
11
+ find_package(DAGMC REQUIRED HINTS @DAGMC_DIR@)
12
+ endif()
13
+
14
+ if(@OPENMC_USE_LIBMESH@)
15
+ include(FindPkgConfig)
16
+ list(APPEND CMAKE_PREFIX_PATH @LIBMESH_PREFIX@)
17
+ set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH True)
18
+ pkg_check_modules(LIBMESH REQUIRED @LIBMESH_PC_FILE@>=1.7.0 IMPORTED_TARGET)
19
+ endif()
20
+
21
+ find_package(PNG)
22
+
23
+ if(NOT TARGET OpenMC::libopenmc)
24
+ include("${OpenMC_CMAKE_DIR}/OpenMCTargets.cmake")
25
+ endif()
26
+
27
+ if(@OPENMC_USE_MPI@)
28
+ find_package(MPI REQUIRED)
29
+ endif()
30
+
31
+ if(@OPENMC_USE_OPENMP@)
32
+ find_package(OpenMP REQUIRED)
33
+ endif()
34
+
35
+ if(@OPENMC_USE_UWUW@ AND NOT ${DAGMC_BUILD_UWUW})
36
+ message(FATAL_ERROR "UWUW is enabled in OpenMC but the DAGMC installation discovered was not configured with UWUW.")
37
+ endif()
openmc/source/cmake/OpenMCConfigVersion.cmake.in ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ set(PACKAGE_VERSION "@OPENMC_VERSION@")
2
+
3
+ # Check whether the requested PACKAGE_FIND_VERSION is compatible
4
+ if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
5
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
6
+ else()
7
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
8
+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
9
+ set(PACKAGE_VERSION_EXACT TRUE)
10
+ endif()
11
+ endif()
openmc/source/docs/Makefile ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line.
5
+ SPHINXOPTS =
6
+ SPHINXBUILD = sphinx-build
7
+ PAPER =
8
+ BUILDDIR = build
9
+ IMAGEDIR = source/_images
10
+
11
+ # Internal variables.
12
+ PAPEROPT_a4 = -D latex_paper_size=a4
13
+ PAPEROPT_letter = -D latex_paper_size=letter
14
+ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
15
+
16
+ # Tikz to PNG conversion
17
+ PNGS = $(patsubst %.tex,%.png,$(wildcard $(IMAGEDIR)/*.tex))
18
+
19
+ .PHONY: help images clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
20
+
21
+ help:
22
+ @echo "Please use \`make <target>' where <target> is one of"
23
+ @echo " html to make standalone HTML files"
24
+ @echo " dirhtml to make HTML files named index.html in directories"
25
+ @echo " singlehtml to make a single large HTML file"
26
+ @echo " pickle to make pickle files"
27
+ @echo " json to make JSON files"
28
+ @echo " htmlhelp to make HTML files and a HTML help project"
29
+ @echo " qthelp to make HTML files and a qthelp project"
30
+ @echo " devhelp to make HTML files and a Devhelp project"
31
+ @echo " epub to make an epub"
32
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
33
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
34
+ @echo " text to make text files"
35
+ @echo " man to make manual pages"
36
+ @echo " changes to make an overview of all changed/added/deprecated items"
37
+ @echo " linkcheck to check all external links for integrity"
38
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
39
+
40
+ %.png: %.tex
41
+ pdflatex --interaction=nonstopmode --output-directory=$(IMAGEDIR) $<
42
+ pdftoppm -r 120 -singlefile $(patsubst %.tex,%.pdf, $<) $(basename $<)
43
+ convert -trim -fuzz 2% -transparent white $(patsubst %.tex,%.ppm,$<) $@
44
+
45
+ clean:
46
+ -rm -rf $(BUILDDIR)/*
47
+ -rm -rf source/pythonapi/generated/
48
+
49
+ html:
50
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
51
+ sed -i -e 's/div.body/div.content/' $(BUILDDIR)/html/_static/basic.css
52
+ @echo
53
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
54
+
55
+ dirhtml:
56
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
57
+ @echo
58
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
59
+
60
+ singlehtml:
61
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
62
+ @echo
63
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
64
+
65
+ pickle:
66
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
67
+ @echo
68
+ @echo "Build finished; now you can process the pickle files."
69
+
70
+ json:
71
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
72
+ @echo
73
+ @echo "Build finished; now you can process the JSON files."
74
+
75
+ htmlhelp:
76
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
77
+ @echo
78
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
79
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
80
+
81
+ qthelp:
82
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
83
+ @echo
84
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
85
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
86
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pyne.qhcp"
87
+ @echo "To view the help file:"
88
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pyne.qhc"
89
+
90
+ devhelp:
91
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
92
+ @echo
93
+ @echo "Build finished."
94
+ @echo "To view the help file:"
95
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/pyne"
96
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pyne"
97
+ @echo "# devhelp"
98
+
99
+ epub:
100
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
101
+ @echo
102
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
103
+
104
+ latex: images
105
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
106
+ @echo
107
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
108
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
109
+ "(use \`make latexpdf' here to do that automatically)."
110
+
111
+ latexpdf: images
112
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
113
+ @echo "Running LaTeX files through pdflatex..."
114
+ make -C $(BUILDDIR)/latex all-pdf
115
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
116
+
117
+ text:
118
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
119
+ @echo
120
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
121
+
122
+ man:
123
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
124
+ @echo
125
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
126
+
127
+ changes:
128
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
129
+ @echo
130
+ @echo "The overview file is in $(BUILDDIR)/changes."
131
+
132
+ linkcheck:
133
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
134
+ @echo
135
+ @echo "Link check complete; look for any errors in the above output " \
136
+ "or in $(BUILDDIR)/linkcheck/output.txt."
137
+
138
+ doctest:
139
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
140
+ @echo "Testing of doctests in the sources finished, look at the " \
141
+ "results in $(BUILDDIR)/doctest/output.txt."
openmc/source/docs/diagrams/cross_sections.dia ADDED
Binary file (2.39 kB). View file
 
openmc/source/docs/diagrams/overview.dia ADDED
Binary file (2.64 kB). View file
 
openmc/source/docs/source/_images/2x2_fsrs.jpeg ADDED

Git LFS Details

  • SHA256: 6116779529604bbdcdd1235cb73dc177dd1819b76703a341143ab172d1589332
  • Pointer size: 131 Bytes
  • Size of remote file: 271 kB
openmc/source/docs/source/_images/2x2_materials.jpeg ADDED
openmc/source/docs/source/_images/2x2_sr_mesh.png ADDED

Git LFS Details

  • SHA256: d958beacabefe15f1b4909023153935a12cde82e3c6963b27ef7961a6b260ce3
  • Pointer size: 131 Bytes
  • Size of remote file: 109 kB
openmc/source/docs/source/_images/3dba.png ADDED
openmc/source/docs/source/_images/3dcore.png ADDED

Git LFS Details

  • SHA256: 983c1b6799534368f0baecb3e07f1e3d7c1f4046e90114f77aff58206285e3f0
  • Pointer size: 131 Bytes
  • Size of remote file: 285 kB
openmc/source/docs/source/_images/3dgeomplot.png ADDED
openmc/source/docs/source/_images/Tracks.png ADDED
openmc/source/docs/source/_images/atr.png ADDED

Git LFS Details

  • SHA256: 290b10c0994c415e3ba12fe9c4cb27187b4df195bb9335b1a82ca751438cc795
  • Pointer size: 131 Bytes
  • Size of remote file: 471 kB
openmc/source/docs/source/_images/cmfd_flow.png ADDED
openmc/source/docs/source/_images/cmfd_flow.tex ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ \documentclass{standalone}
2
+ \usepackage[utf8]{inputenc}
3
+ \usepackage{amsmath}
4
+ \usepackage{tikz}
5
+ \usepackage{pgfplots}
6
+ \pgfplotsset{compat=1.11}
7
+ \usetikzlibrary{shapes,snakes,shadows,arrows,calc,decorations.markings,patterns,fit,matrix,spy}
8
+ \pagestyle{empty}
9
+ \begin{document}
10
+ \begin{tikzpicture}
11
+ \matrix[every node/.style={draw, thick, minimum width=3cm, minimum height=1cm, align=center}, column sep=2cm, row sep=1cm] (m) {
12
+ \node[draw, fill=red!40] (start) {Batch $i$ \\ tally NDA}; & \\
13
+ \node[draw, diamond, aspect=2, fill=green!40] (cmfd) {Run NDA?}; & \node[draw, fill=red!40] (end) {Batch $i + 1$ \\ tally NDA}; \\
14
+ \node[draw, fill=blue!40] (xs) {Calculate XS \& DC}; & \node[draw, fill=blue!40] (modify) {Modify MC Source}; \\
15
+ \node[draw, fill=blue!40] (nonlinear) {Calculate Equivalence}; & \node[draw, fill=blue!40] (eqs) {Solve NDA eqs.};\\
16
+ };
17
+
18
+ \begin{scope}[every path/.style={->,very thick,draw}]
19
+ \draw (start.south) -- (cmfd.north);
20
+ \draw (cmfd.east) -- node[above] {no} (end.west);
21
+ \draw (cmfd.south) -- node[right] {yes} (xs.north);
22
+ \draw (xs.south) -- (nonlinear.north);
23
+ \draw (nonlinear.east) -- (eqs.west);
24
+ \draw (eqs.north) -- (modify.south);
25
+ \draw (modify.north) -- (end.south);
26
+ \end{scope}
27
+
28
+ \end{tikzpicture}
29
+ \end{document}
openmc/source/docs/source/_images/cosine-dist.png ADDED
openmc/source/docs/source/_images/fluxplot.png ADDED
openmc/source/docs/source/_images/fork.png ADDED
openmc/source/docs/source/_images/halfspace.svg ADDED
openmc/source/docs/source/_images/hex_lat.svg ADDED
openmc/source/docs/source/_images/hexlat_anim.gif ADDED

Git LFS Details

  • SHA256: 1a333eaa62e357ececbe58995f860d8dec5bda168246fb6aa452f6f3b4265406
  • Pointer size: 132 Bytes
  • Size of remote file: 1.23 MB
openmc/source/docs/source/_images/loss.png ADDED
openmc/source/docs/source/_images/master-slave.png ADDED
openmc/source/docs/source/_images/meshfig.png ADDED