openmc-data 2.5.0__tar.gz → 2.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. {openmc_data-2.5.0 → openmc_data-2.6.0}/.github/workflows/test_package.yml +7 -4
  2. openmc_data-2.6.0/.github/workflows/test_processing.yml +114 -0
  3. openmc_data-2.6.0/.github/workflows/test_urls.yml +55 -0
  4. {openmc_data-2.5.0 → openmc_data-2.6.0}/.gitignore +1 -0
  5. {openmc_data-2.5.0 → openmc_data-2.6.0}/PKG-INFO +63 -9
  6. {openmc_data-2.5.0 → openmc_data-2.6.0}/README.md +62 -8
  7. {openmc_data-2.5.0 → openmc_data-2.6.0}/pyproject.toml +10 -3
  8. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/_version.py +3 -3
  9. openmc_data-2.6.0/src/openmc_data/convert/convert_jeff.py +306 -0
  10. openmc_data-2.6.0/src/openmc_data/download/download_jeff.py +54 -0
  11. openmc_data-2.6.0/src/openmc_data/generate/generate_jeff.py +286 -0
  12. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/urls.py +67 -40
  13. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/urls_h5.py +17 -0
  14. openmc_data-2.6.0/src/openmc_data/urls_jeff.py +151 -0
  15. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/utils.py +21 -5
  16. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/PKG-INFO +63 -9
  17. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/SOURCES.txt +5 -3
  18. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/entry_points.txt +3 -3
  19. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/scm_file_list.json +5 -3
  20. openmc_data-2.6.0/src/openmc_data.egg-info/scm_version.json +8 -0
  21. openmc_data-2.6.0/tests/test_download_jeff.py +207 -0
  22. openmc_data-2.6.0/tests/test_urls.py +272 -0
  23. openmc_data-2.5.0/.github/workflows/test_processing.yml +0 -143
  24. openmc_data-2.5.0/.github/workflows/test_urls.yml +0 -52
  25. openmc_data-2.5.0/src/openmc_data/convert/convert_jeff32.py +0 -266
  26. openmc_data-2.5.0/src/openmc_data/convert/convert_jeff33.py +0 -228
  27. openmc_data-2.5.0/src/openmc_data/generate/generate_jeff33.py +0 -216
  28. openmc_data-2.5.0/src/openmc_data.egg-info/scm_version.json +0 -8
  29. openmc_data-2.5.0/tests/test_urls.py +0 -83
  30. {openmc_data-2.5.0 → openmc_data-2.6.0}/.github/workflows/python-publish.yml +0 -0
  31. {openmc_data-2.5.0 → openmc_data-2.6.0}/LICENSE +0 -0
  32. {openmc_data-2.5.0 → openmc_data-2.6.0}/MANIFEST.in +0 -0
  33. {openmc_data-2.5.0 → openmc_data-2.6.0}/setup.cfg +0 -0
  34. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/__init__.py +0 -0
  35. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/__init__.py +0 -0
  36. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/convert_endf.py +0 -0
  37. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/convert_fendl.py +0 -0
  38. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/convert_lib80x.py +0 -0
  39. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/convert_mcnp70.py +0 -0
  40. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/convert_mcnp71.py +0 -0
  41. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/convert/convert_tendl.py +0 -0
  42. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/__init__.py +0 -0
  43. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/add_branching_ratios.py +0 -0
  44. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/branching_ratios_pwr.json +0 -0
  45. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/branching_ratios_sfr.json +0 -0
  46. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/casl_chain.py +0 -0
  47. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_branching_ratios.py +0 -0
  48. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_endf71_chain_casl.py +0 -0
  49. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_endf_chain.py +0 -0
  50. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_jeff_chain.py +0 -0
  51. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_jendl_chain.py +0 -0
  52. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_serpent_fissq.py +0 -0
  53. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/generate_tendl_chain.py +0 -0
  54. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/reduce_chain.py +0 -0
  55. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/serpent_fissq.json +0 -0
  56. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/tendl2019_nuclides.json +0 -0
  57. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/depletion/tendl2021_nuclides.json +0 -0
  58. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/download/__init__.py +0 -0
  59. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/download/download_chain.py +0 -0
  60. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/download/download_endf.py +0 -0
  61. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/download/download_tendl.py +0 -0
  62. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/generate/__init__.py +0 -0
  63. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/generate/generate_cendl.py +0 -0
  64. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/generate/generate_endf.py +0 -0
  65. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/generate/generate_fendl.py +0 -0
  66. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/generate/generate_jendl.py +0 -0
  67. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/generate/generate_tendl.py +0 -0
  68. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/__init__.py +0 -0
  69. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/combine_libraries.py +0 -0
  70. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/convert_tendl_rand.py +0 -0
  71. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/make_compton.py +0 -0
  72. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/make_stopping_powers.py +0 -0
  73. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/remove_corrupt_h5.py +0 -0
  74. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/other/sample_sandy.py +0 -0
  75. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/urls_chain.py +0 -0
  76. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data/urls_xml.py +0 -0
  77. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/dependency_links.txt +0 -0
  78. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/requires.txt +0 -0
  79. {openmc_data-2.5.0 → openmc_data-2.6.0}/src/openmc_data.egg-info/top_level.txt +0 -0
  80. {openmc_data-2.5.0 → openmc_data-2.6.0}/tests/test_utils.py +0 -0
  81. {openmc_data-2.5.0 → openmc_data-2.6.0}/tests/test_version.py +0 -0
@@ -41,15 +41,17 @@ jobs:
41
41
  cd ..
42
42
  pip install .
43
43
  cd ..
44
- pip install .
44
+ pip install '.[tests]'
45
+
46
+ - name: Test offline unit and CLI behavior
47
+ run: python -m pytest -q -rs tests -m 'not network and not integration'
45
48
 
46
49
  # this just check the scripts are accessible after the install
47
50
  # the scripts are not run or checked for correct behaviour
48
51
  - name: Test convert scripts exist
49
52
  run: |
50
53
  convert_fendl --help
51
- convert_jeff32 --help
52
- convert_jeff33 --help
54
+ convert_jeff --help
53
55
  convert_lib80x --help
54
56
  convert_mcnp70 --help
55
57
  convert_mcnp71 --help
@@ -60,12 +62,13 @@ jobs:
60
62
  run: |
61
63
  generate_cendl --help
62
64
  generate_endf --help
63
- generate_jeff33 --help
65
+ generate_jeff --help
64
66
  generate_jendl --help
65
67
 
66
68
  - name: Test download h5 scripts exist
67
69
  run: |
68
70
  download_endf --help
71
+ download_jeff --help
69
72
  download_tendl --help
70
73
 
71
74
  - name: Test download chain files scripts exist
@@ -0,0 +1,114 @@
1
+
2
+ name: test_convert_scripts
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ script:
7
+ description: Script recipe to run (downloads and processes large datasets)
8
+ required: true
9
+ type: choice
10
+ options:
11
+ - convert_fendl
12
+ - convert_jeff
13
+ - convert_endf
14
+ - convert_tendl
15
+ - convert_tendl_rand
16
+ - download_endf
17
+ - download_tendl
18
+ - download_chain
19
+ - add_branching_ratios
20
+ - reduce_chain
21
+
22
+
23
+ jobs:
24
+ run_scripts:
25
+ runs-on: ubuntu-latest
26
+ timeout-minutes: 360
27
+ steps:
28
+ - uses: actions/checkout@v5
29
+
30
+ - name: Set up Python
31
+ uses: actions/setup-python@v6
32
+ with:
33
+ python-version: 3.12
34
+
35
+ - name: Install testing dependencies
36
+ run: |
37
+ sudo apt-get update
38
+ sudo apt-get install libhdf5-serial-dev
39
+ git clone --single-branch --branch develop --depth 1 https://github.com/openmc-dev/openmc.git
40
+ cd openmc
41
+ mkdir build
42
+ cd build
43
+ cmake ..
44
+ make -j2
45
+ sudo make -j2 install
46
+ cd ..
47
+ pip install .
48
+ cd ..
49
+ pip install .
50
+
51
+ # Convert scripts that require MCNP nuclear data are not tested because
52
+ # the CI doesn't contain that nuclear data.
53
+ # convert_lib80x.py convert_mcnp70.py convert_mcnp71.py files are not tested here
54
+
55
+ - name: test default convert_fendl
56
+ if: inputs.script == 'convert_fendl'
57
+ run: |
58
+ convert_fendl --cleanup
59
+
60
+ # Limit neutron processing to one temperature to bound disk use.
61
+ - name: test convert_jeff
62
+ if: inputs.script == 'convert_jeff'
63
+ run: convert_jeff -t 293 --cleanup
64
+
65
+ - name: test default convert_endf
66
+ if: inputs.script == 'convert_endf'
67
+ run: |
68
+ convert_endf --cleanup
69
+
70
+ - name: test default convert_tendl
71
+ if: inputs.script == 'convert_tendl'
72
+ run: |
73
+ convert_tendl --cleanup
74
+
75
+ - name: test default convert_tendl_rand
76
+ if: inputs.script == 'convert_tendl_rand'
77
+ run: |
78
+ convert_tendl_rand --nuclides O16 --cleanup
79
+
80
+ # download scripts
81
+ - name: test default download_endf
82
+ if: inputs.script == 'download_endf'
83
+ run: |
84
+ download_endf
85
+
86
+ - name: test default download_tendl
87
+ if: inputs.script == 'download_tendl'
88
+ run: |
89
+ download_tendl -r 2019
90
+ download_tendl -r 2021
91
+
92
+ - name: test default download_chain
93
+ if: inputs.script == 'download_chain'
94
+ run: |
95
+ download_chain -l endf -r b7.1 -b None
96
+ download_chain -l endf -r b8.0 -b None
97
+ download_chain -l endf -r b7.1 -b SFR
98
+ download_chain -l endf -r b8.0 -b SFR
99
+ download_chain -l endf -r b7.1 -b PWR
100
+ download_chain -l endf -r b8.0 -b PWR
101
+ download_chain -l endf -r b8.0 -b PWR
102
+
103
+ - name: test default add_branching_ratios
104
+ if: inputs.script == 'add_branching_ratios'
105
+ run: |
106
+ download_chain -l endf -r b8.0
107
+ add_branching_ratios -i chain-endf-b8.0.xml -o chain_endf_b8.0_sfr.xml -b sfr
108
+ add_branching_ratios -i chain-endf-b8.0.xml -o chain_endf_b8.0_pwr.xml -b pwr
109
+
110
+ - name: test default reduce_chain
111
+ if: inputs.script == 'reduce_chain'
112
+ run: |
113
+ download_chain -l endf -r b8.0
114
+ reduce_chain -i chain-endf-b8.0.xml -o chain_endf_b8.0_sfr.xml -hl 1e15
@@ -0,0 +1,55 @@
1
+
2
+ name: test_urls
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ branches:
7
+ - main
8
+ paths-ignore:
9
+ - "**.md"
10
+ - "**.txt"
11
+ - "**.cff"
12
+ - 'docs/**'
13
+ - '.gitignore'
14
+ push:
15
+ branches:
16
+ - main
17
+ schedule:
18
+ - cron: "0 0 * * *"
19
+ # cron job runs every day
20
+
21
+ jobs:
22
+ ping_urls:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v5
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v6
29
+ with:
30
+ python-version: 3.12
31
+
32
+ - name: Install testing dependencies
33
+ run: python -m pip install '.[tests]'
34
+
35
+ - name: Test URL registry and HTTP helpers offline
36
+ run: python -m pytest -q -rs tests/test_urls.py -m 'not network and not integration'
37
+
38
+ live_urls:
39
+ if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
40
+ runs-on: ubuntu-latest
41
+ timeout-minutes: 180
42
+ steps:
43
+ - uses: actions/checkout@v5
44
+
45
+ - name: Set up Python
46
+ uses: actions/setup-python@v6
47
+ with:
48
+ python-version: 3.12
49
+
50
+ - name: Install testing dependencies
51
+ run: python -m pip install '.[tests]'
52
+
53
+ # External failures remain failures; this health check is not a PR gate.
54
+ - name: Test live URLs with explicit skip reasons
55
+ run: python -m pytest -v -rs tests/test_urls.py -m network
@@ -50,6 +50,7 @@ coverage.xml
50
50
  *.py,cover
51
51
  .hypothesis/
52
52
  .pytest_cache/
53
+ .pytest-tmp/
53
54
 
54
55
  # Translations
55
56
  *.mo
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openmc_data
3
- Version: 2.5.0
3
+ Version: 2.6.0
4
4
  Summary: A Python package containing a collection of scripts for producing and downloading data for OpenMC
5
5
  Author-email: Jonathan Shimwell <mail@jshimwell.com>
6
6
  License-Expression: MIT
@@ -40,6 +40,34 @@ The package is distributed on [PYPI](https://pypi.org/project/openmc-data/) and
40
40
  pip install openmc_data
41
41
  ```
42
42
 
43
+ # Testing
44
+
45
+ Install the test dependencies with `python -m pip install '.[tests]'`, then run
46
+ the offline suite with `python -m pytest -q -rs tests -m 'not network and not integration'`.
47
+ Tests stay in the flat [tests](tests) directory: [test_utils.py](tests/test_utils.py)
48
+ covers shared utilities, [test_urls.py](tests/test_urls.py) covers registry
49
+ validation, HTTP helper regressions and marked live URL checks, and script-specific
50
+ tests belong in files named test_&lt;script&gt;.py alongside them. Use pytest's
51
+ `tmp_path` for generated test artifacts rather than writing into the repository.
52
+
53
+ The `network` marker identifies live external URL checks; `integration` identifies
54
+ data download and processing tests. Pull requests and pushes run offline tests
55
+ and CLI help checks in [test_package.yml](.github/workflows/test_package.yml), and
56
+ offline URL syntax and repository-file checks in
57
+ [test_urls.yml](.github/workflows/test_urls.yml), without compiling OpenMC for the
58
+ URL jobs. Live URL checks run nightly or manually in a separate job of that same
59
+ workflow. Full, multi-GB processing runs only through the required script choice
60
+ in the manual [test_processing.yml](.github/workflows/test_processing.yml) workflow.
61
+
62
+ Exactly one URL is explicitly **not tested over HTTP** because of its Cloudflare
63
+ challenge:
64
+ <https://nds.iaea.org/fendl/data/neutron/fendl-FENDL-3.2c-neutron-endf.zip>.
65
+ Its syntax is still checked offline. Other HTTP errors, including IAEA and
66
+ Cloudflare 403 responses, remain failures, not skips or expected failures.
67
+ Nightly/manual external health checks may remain red until blocked IAEA and
68
+ obsolete OECD URLs are restored; passing offline checks does not establish that
69
+ downloads are available.
70
+
43
71
  # Usage
44
72
 
45
73
  Once installed several scripts are available in your terminal that are able to
@@ -81,10 +109,36 @@ A few categories of scripts are available:
81
109
  |convert_endf | ENDF/B | VII.1 | NNDC |
82
110
  |convert_lib80x | ENDF/B | VIII.0 | LANL |
83
111
  |convert_fendl | FENDL | 3.2c<br>3.2b<br>3.2a<br>3.2<br>3.1d<br>3.1a<br>3.1<br>3.0<br>2.1 |
84
- |convert_jeff32 | JEFF | 3.2 |
85
- |convert_jeff33 | JEFF | 3.3 |
112
+ |convert_jeff | JEFF | 3.2<br>3.3<br>4.0 (default) | OECD/NEA |
86
113
  |convert_tendl | TENDL | 2015<br>2017<br>2019<br>2021 |
87
114
 
115
+ #### JEFF ACE conversion
116
+
117
+ `convert_jeff -r 3.3 -t 600 900 --destination jeff-hot` converts neutron and
118
+ thermal ACE data without NJOY or a 293 K base. Defaults: release 4.0, all neutron
119
+ temperatures, `--libver latest`. Available neutron archive temperatures:
120
+
121
+ | Release | Neutron archive temperatures (K) |
122
+ | --- | --- |
123
+ | 3.2 | 293, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1500, 1800 |
124
+ | 3.3 | 293, 600, 900, 1200, 1500, 1800 |
125
+ | 4.0 | 0.1, 293, 300, 600, 900, 1200, 1500, 1800 |
126
+
127
+ Select the 4.0 archive containing 293.6 K data with `-t 293`. **All native thermal
128
+ temperatures** are retained, including the 1 K UO2 pairs. **JEFF-4.0 supplies only
129
+ the public 12-case/316-table thermal subset**, not the full TSL library.
130
+ Unknown thermal aliases retain their identity with a `c_` prefix and warning.
131
+
132
+ Output HDF5/XML goes directly into `--destination` (default `jeff-<release>-hdf5`),
133
+ staged until conversion succeeds; existing files and name/temperature collisions fail.
134
+ Downloads require multiple GB. `--no-download --no-extract` reuses working-directory
135
+ caches `jeff-<release>-download` and `jeff-<release>-ace`; `--cleanup` removes both
136
+ only after success. Metastable corrections never edit cached ACE files.
137
+ Every discovered nuclide must have every selected neutron temperature; 3.3 also
138
+ requires its 20 thermal groups. Caches cannot reveal nuclides absent at all temperatures.
139
+
140
+ See `convert_jeff --help` for all options.
141
+
88
142
  ### Generate cross sections
89
143
 
90
144
  | Script name | Library | Release | Processed by |
@@ -93,15 +147,17 @@ A few categories of scripts are available:
93
147
  | generate_endf | ENDF/B | VII.1<br>VIII.0<br>VIII.1 | NNDC |
94
148
  | generate_fendl | FENDL | 3.2c<br>3.2b<br>3.2a<br>3.2<br>3.1d<br>3.1a<br>3.0 | |
95
149
  | generate_jendl | JENDL | 4.0<br>5.0 | |
150
+ | generate_jeff | JEFF | 3.3<br>4.0 | NJOY |
96
151
  | generate_tendl | TENDL | 2023<br>2025 | |
97
152
 
98
153
 
99
154
  ### Download cross sections
100
155
 
101
- | Script name | Library | Release | Processed by |
102
- |-|-|-|-|
103
- | download_endf | ENDF/B | VII.1<br>VIII.0<br>VIII.1 | NNDC |
104
- | download_tendl | TENDL | 2019<br>2021 | |
156
+ | Script name | Library | Release | Processed by | Neutron temperatures (K) |
157
+ |-|-|-|-|-|
158
+ | download_endf | ENDF/B | VII.1<br>VIII.0<br>VIII.1 | NNDC | 250, 293.6, 600, 900, 1200, 2500 |
159
+ | download_jeff | JEFF | 3.3<br>4.0 | OpenMC development team | 250, 293.6, 600, 900, 1200, 2500 |
160
+ | download_tendl | TENDL | 2019<br>2021 | | 293.6 |
105
161
 
106
162
  <!-- | Script name | Library | Release | Processed by | Download available | Downloads ACE files and convert to HDF5 | Downloads ENDF files and convert to HDF5 | Convert local ACE files |
107
163
  |-|-|-|-|-|-|-|-|
@@ -114,8 +170,6 @@ A few categories of scripts are available:
114
170
  |generate_endf| ENDF/B | VIII.0 | NNDC | [openmc.org](https://anl.box.com/shared/static/uhbxlrx7hvxqw27psymfbhi7bx7s6u6a.xz) | | :heavy_check_mark: | |
115
171
  |convert_fendl| FENDL | 2.1<br>3.0<br>3.1a<br>3.1d<br>3.2 | | [openmc.org 3.2](https://anl.box.com/shared/static/3cb7jetw7tmxaw6nvn77x6c578jnm2ey.xz) | :heavy_check_mark: | | |
116
172
  |generate_jendl| JENDL | 4.0 | | | | :heavy_check_mark: | |
117
- |convert_jeff32| JEFF | 3.2 | | [openmc.org](https://anl.box.com/shared/static/pb94oxriiipezysu7w4r2qdoufc2epxv.xz) | :heavy_check_mark: | | |
118
- |convert_jeff33| JEFF | 3.3 | | [openmc.org](https://anl.box.com/shared/static/ddetxzp0gv1buk1ev67b8ynik7f268hw.xz) | :heavy_check_mark: | | |
119
173
  |convert_tendl| TENDL | 2015<br>2017<br>2019<br>2021| | | :heavy_check_mark: | | | -->
120
174
 
121
175
  ## Produce Depletion Chain files
@@ -20,6 +20,34 @@ The package is distributed on [PYPI](https://pypi.org/project/openmc-data/) and
20
20
  pip install openmc_data
21
21
  ```
22
22
 
23
+ # Testing
24
+
25
+ Install the test dependencies with `python -m pip install '.[tests]'`, then run
26
+ the offline suite with `python -m pytest -q -rs tests -m 'not network and not integration'`.
27
+ Tests stay in the flat [tests](tests) directory: [test_utils.py](tests/test_utils.py)
28
+ covers shared utilities, [test_urls.py](tests/test_urls.py) covers registry
29
+ validation, HTTP helper regressions and marked live URL checks, and script-specific
30
+ tests belong in files named test_&lt;script&gt;.py alongside them. Use pytest's
31
+ `tmp_path` for generated test artifacts rather than writing into the repository.
32
+
33
+ The `network` marker identifies live external URL checks; `integration` identifies
34
+ data download and processing tests. Pull requests and pushes run offline tests
35
+ and CLI help checks in [test_package.yml](.github/workflows/test_package.yml), and
36
+ offline URL syntax and repository-file checks in
37
+ [test_urls.yml](.github/workflows/test_urls.yml), without compiling OpenMC for the
38
+ URL jobs. Live URL checks run nightly or manually in a separate job of that same
39
+ workflow. Full, multi-GB processing runs only through the required script choice
40
+ in the manual [test_processing.yml](.github/workflows/test_processing.yml) workflow.
41
+
42
+ Exactly one URL is explicitly **not tested over HTTP** because of its Cloudflare
43
+ challenge:
44
+ <https://nds.iaea.org/fendl/data/neutron/fendl-FENDL-3.2c-neutron-endf.zip>.
45
+ Its syntax is still checked offline. Other HTTP errors, including IAEA and
46
+ Cloudflare 403 responses, remain failures, not skips or expected failures.
47
+ Nightly/manual external health checks may remain red until blocked IAEA and
48
+ obsolete OECD URLs are restored; passing offline checks does not establish that
49
+ downloads are available.
50
+
23
51
  # Usage
24
52
 
25
53
  Once installed several scripts are available in your terminal that are able to
@@ -61,10 +89,36 @@ A few categories of scripts are available:
61
89
  |convert_endf | ENDF/B | VII.1 | NNDC |
62
90
  |convert_lib80x | ENDF/B | VIII.0 | LANL |
63
91
  |convert_fendl | FENDL | 3.2c<br>3.2b<br>3.2a<br>3.2<br>3.1d<br>3.1a<br>3.1<br>3.0<br>2.1 |
64
- |convert_jeff32 | JEFF | 3.2 |
65
- |convert_jeff33 | JEFF | 3.3 |
92
+ |convert_jeff | JEFF | 3.2<br>3.3<br>4.0 (default) | OECD/NEA |
66
93
  |convert_tendl | TENDL | 2015<br>2017<br>2019<br>2021 |
67
94
 
95
+ #### JEFF ACE conversion
96
+
97
+ `convert_jeff -r 3.3 -t 600 900 --destination jeff-hot` converts neutron and
98
+ thermal ACE data without NJOY or a 293 K base. Defaults: release 4.0, all neutron
99
+ temperatures, `--libver latest`. Available neutron archive temperatures:
100
+
101
+ | Release | Neutron archive temperatures (K) |
102
+ | --- | --- |
103
+ | 3.2 | 293, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1500, 1800 |
104
+ | 3.3 | 293, 600, 900, 1200, 1500, 1800 |
105
+ | 4.0 | 0.1, 293, 300, 600, 900, 1200, 1500, 1800 |
106
+
107
+ Select the 4.0 archive containing 293.6 K data with `-t 293`. **All native thermal
108
+ temperatures** are retained, including the 1 K UO2 pairs. **JEFF-4.0 supplies only
109
+ the public 12-case/316-table thermal subset**, not the full TSL library.
110
+ Unknown thermal aliases retain their identity with a `c_` prefix and warning.
111
+
112
+ Output HDF5/XML goes directly into `--destination` (default `jeff-<release>-hdf5`),
113
+ staged until conversion succeeds; existing files and name/temperature collisions fail.
114
+ Downloads require multiple GB. `--no-download --no-extract` reuses working-directory
115
+ caches `jeff-<release>-download` and `jeff-<release>-ace`; `--cleanup` removes both
116
+ only after success. Metastable corrections never edit cached ACE files.
117
+ Every discovered nuclide must have every selected neutron temperature; 3.3 also
118
+ requires its 20 thermal groups. Caches cannot reveal nuclides absent at all temperatures.
119
+
120
+ See `convert_jeff --help` for all options.
121
+
68
122
  ### Generate cross sections
69
123
 
70
124
  | Script name | Library | Release | Processed by |
@@ -73,15 +127,17 @@ A few categories of scripts are available:
73
127
  | generate_endf | ENDF/B | VII.1<br>VIII.0<br>VIII.1 | NNDC |
74
128
  | generate_fendl | FENDL | 3.2c<br>3.2b<br>3.2a<br>3.2<br>3.1d<br>3.1a<br>3.0 | |
75
129
  | generate_jendl | JENDL | 4.0<br>5.0 | |
130
+ | generate_jeff | JEFF | 3.3<br>4.0 | NJOY |
76
131
  | generate_tendl | TENDL | 2023<br>2025 | |
77
132
 
78
133
 
79
134
  ### Download cross sections
80
135
 
81
- | Script name | Library | Release | Processed by |
82
- |-|-|-|-|
83
- | download_endf | ENDF/B | VII.1<br>VIII.0<br>VIII.1 | NNDC |
84
- | download_tendl | TENDL | 2019<br>2021 | |
136
+ | Script name | Library | Release | Processed by | Neutron temperatures (K) |
137
+ |-|-|-|-|-|
138
+ | download_endf | ENDF/B | VII.1<br>VIII.0<br>VIII.1 | NNDC | 250, 293.6, 600, 900, 1200, 2500 |
139
+ | download_jeff | JEFF | 3.3<br>4.0 | OpenMC development team | 250, 293.6, 600, 900, 1200, 2500 |
140
+ | download_tendl | TENDL | 2019<br>2021 | | 293.6 |
85
141
 
86
142
  <!-- | Script name | Library | Release | Processed by | Download available | Downloads ACE files and convert to HDF5 | Downloads ENDF files and convert to HDF5 | Convert local ACE files |
87
143
  |-|-|-|-|-|-|-|-|
@@ -94,8 +150,6 @@ A few categories of scripts are available:
94
150
  |generate_endf| ENDF/B | VIII.0 | NNDC | [openmc.org](https://anl.box.com/shared/static/uhbxlrx7hvxqw27psymfbhi7bx7s6u6a.xz) | | :heavy_check_mark: | |
95
151
  |convert_fendl| FENDL | 2.1<br>3.0<br>3.1a<br>3.1d<br>3.2 | | [openmc.org 3.2](https://anl.box.com/shared/static/3cb7jetw7tmxaw6nvn77x6c578jnm2ey.xz) | :heavy_check_mark: | | |
96
152
  |generate_jendl| JENDL | 4.0 | | | | :heavy_check_mark: | |
97
- |convert_jeff32| JEFF | 3.2 | | [openmc.org](https://anl.box.com/shared/static/pb94oxriiipezysu7w4r2qdoufc2epxv.xz) | :heavy_check_mark: | | |
98
- |convert_jeff33| JEFF | 3.3 | | [openmc.org](https://anl.box.com/shared/static/ddetxzp0gv1buk1ev67b8ynik7f268hw.xz) | :heavy_check_mark: | | |
99
153
  |convert_tendl| TENDL | 2015<br>2017<br>2019<br>2021| | | :heavy_check_mark: | | | -->
100
154
 
101
155
  ## Produce Depletion Chain files
@@ -37,6 +37,13 @@ tests = [
37
37
  "requests"
38
38
  ]
39
39
 
40
+ [tool.pytest.ini_options]
41
+ testpaths = ["tests"]
42
+ markers = [
43
+ "network: live external URL checks (scheduled or manual, not a pull request gate)",
44
+ "integration: data download and processing tests (manual only)",
45
+ ]
46
+
40
47
  [project.urls]
41
48
  "Homepage" = "https://github.com/fusion-energy/openmc_data"
42
49
  "Bug Tracker" = "https://github.com/fusion-energy/openmc_data/issues"
@@ -54,8 +61,7 @@ include-package-data = false
54
61
 
55
62
  [project.scripts]
56
63
  convert_fendl = "openmc_data.convert.convert_fendl:main"
57
- convert_jeff32 = "openmc_data.convert.convert_jeff32:main"
58
- convert_jeff33 = "openmc_data.convert.convert_jeff33:main"
64
+ convert_jeff = "openmc_data.convert.convert_jeff:main"
59
65
  convert_lib80x = "openmc_data.convert.convert_lib80x:main"
60
66
  convert_mcnp70 = "openmc_data.convert.convert_mcnp70:main"
61
67
  convert_mcnp71 = "openmc_data.convert.convert_mcnp71:main"
@@ -64,7 +70,7 @@ convert_tendl = "openmc_data.convert.convert_tendl:main"
64
70
 
65
71
  generate_cendl = "openmc_data.generate.generate_cendl:main"
66
72
  generate_endf = "openmc_data.generate.generate_endf:main"
67
- generate_jeff33 = "openmc_data.generate.generate_jeff33:main"
73
+ generate_jeff = "openmc_data.generate.generate_jeff:main"
68
74
  generate_jendl = "openmc_data.generate.generate_jendl:main"
69
75
  generate_fendl = "openmc_data.generate.generate_fendl:main"
70
76
  generate_tendl = "openmc_data.generate.generate_tendl:main"
@@ -87,5 +93,6 @@ sample_sandy = "openmc_data.other.sample_sandy:main"
87
93
  reduce_chain = "openmc_data.depletion.reduce_chain:main"
88
94
 
89
95
  download_endf = "openmc_data.download.download_endf:main"
96
+ download_jeff = "openmc_data.download.download_jeff:main"
90
97
  download_tendl = "openmc_data.download.download_tendl:main"
91
98
  download_chain = "openmc_data.download.download_chain:main"
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.5.0'
22
- __version_tuple__ = version_tuple = (2, 5, 0)
21
+ __version__ = version = '2.6.0'
22
+ __version_tuple__ = version_tuple = (2, 6, 0)
23
23
 
24
- __commit_id__ = commit_id = 'gf334eb8a8'
24
+ __commit_id__ = commit_id = 'g06d8c2c1f'