Fix for plotting model with multi-group cross sections #7567
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tests and Coverage | |
| on: | |
| # allows us to run workflows manually | |
| workflow_dispatch: | |
| pull_request: | |
| branches: | |
| - develop | |
| - master | |
| push: | |
| branches: | |
| - develop | |
| - master | |
| env: | |
| MPI_DIR: /usr | |
| HDF5_ROOT: /usr | |
| OMP_NUM_THREADS: 2 | |
| COVERALLS_PARALLEL: true | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| jobs: | |
| filter-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| source_changed: ${{ steps.filter.outputs.source_changed }} | |
| steps: | |
| - name: Check out the repository | |
| uses: actions/checkout@v4 | |
| - name: Examine changed files | |
| id: filter | |
| uses: dorny/paths-filter@668c092af3649c4b664c54e4b704aa46782f6f7c # latest master commit, not released yet | |
| with: | |
| filters: | | |
| source_changed: | |
| - '!docs/**' | |
| - '!**/*.md' | |
| predicate-quantifier: 'every' | |
| main: | |
| needs: filter-changes | |
| if: ${{ needs.filter-changes.outputs.source_changed == 'true' }} | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| matrix: | |
| python-version: ["3.11"] | |
| mpi: [n, y] | |
| omp: [n, y] | |
| dagmc: [n] | |
| libmesh: [n] | |
| event: [n] | |
| vectfit: [n] | |
| include: | |
| - python-version: "3.12" | |
| omp: n | |
| mpi: n | |
| - python-version: "3.13" | |
| omp: n | |
| mpi: n | |
| - dagmc: y | |
| python-version: "3.11" | |
| mpi: y | |
| omp: y | |
| - libmesh: y | |
| python-version: "3.11" | |
| mpi: y | |
| omp: y | |
| - libmesh: y | |
| python-version: "3.11" | |
| mpi: n | |
| omp: y | |
| - event: y | |
| python-version: "3.11" | |
| omp: y | |
| mpi: n | |
| - vectfit: y | |
| python-version: "3.11" | |
| omp: n | |
| mpi: y | |
| name: "Python ${{ matrix.python-version }} (omp=${{ matrix.omp }}, | |
| mpi=${{ matrix.mpi }}, dagmc=${{ matrix.dagmc }}, | |
| libmesh=${{ matrix.libmesh }}, event=${{ matrix.event }} | |
| vectfit=${{ matrix.vectfit }})" | |
| env: | |
| MPI: ${{ matrix.mpi }} | |
| PHDF5: ${{ matrix.mpi }} | |
| OMP: ${{ matrix.omp }} | |
| DAGMC: ${{ matrix.dagmc }} | |
| EVENT: ${{ matrix.event }} | |
| VECTFIT: ${{ matrix.vectfit }} | |
| LIBMESH: ${{ matrix.libmesh }} | |
| NPY_DISABLE_CPU_FEATURES: "AVX512F AVX512_SKX" | |
| OPENBLAS_NUM_THREADS: 1 | |
| PYTEST_ADDOPTS: --cov=openmc --cov-report=lcov:coverage-python.lcov | |
| # libfabric complains about fork() as a result of using Python multiprocessing. | |
| # We can work around it with RDMAV_FORK_SAFE=1 in libfabric < 1.13 and with | |
| # FI_EFA_FORK_SAFE=1 in more recent versions. | |
| RDMAV_FORK_SAFE: 1 | |
| steps: | |
| - name: Setup cmake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: '3.31' | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Environment Variables | |
| run: | | |
| echo "OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml" >> $GITHUB_ENV | |
| echo "OPENMC_ENDF_DATA=$HOME/endf-b-vii.1" >> $GITHUB_ENV | |
| # get the sha of the last branch commit | |
| # for push and workflow_dispatch events, use the current reference head | |
| BRANCH_SHA=HEAD | |
| # for a pull_request event, use the last reference of the parents of the merge commit | |
| if [ "${{ github.event_name }}" == "pull_request" ]; then | |
| BRANCH_SHA=$(git rev-list --parents -n 1 HEAD | rev | cut -d" " -f 1 | rev) | |
| fi | |
| COMMIT_MESSAGE=$(git log $BRANCH_SHA -1 --pretty=%B | tr '\n' ' ') | |
| echo ${COMMIT_MESSAGE} | |
| echo "COMMIT_MESSAGE=${COMMIT_MESSAGE}" >> $GITHUB_ENV | |
| - name: Apt dependencies | |
| shell: bash | |
| run: | | |
| sudo apt -y update | |
| sudo apt install -y libpng-dev \ | |
| libnetcdf-dev \ | |
| libpnetcdf-dev \ | |
| libhdf5-serial-dev \ | |
| libeigen3-dev | |
| - name: Optional apt dependencies for MPI | |
| shell: bash | |
| if: ${{ matrix.mpi == 'y' }} | |
| run: | | |
| sudo apt install -y libhdf5-mpich-dev \ | |
| libmpich-dev | |
| sudo update-alternatives --set mpi /usr/bin/mpicc.mpich | |
| sudo update-alternatives --set mpirun /usr/bin/mpirun.mpich | |
| sudo update-alternatives --set mpi-x86_64-linux-gnu /usr/include/x86_64-linux-gnu/mpich | |
| - name: Optional apt dependencies for vectfit | |
| shell: bash | |
| if: ${{ matrix.vectfit == 'y' }} | |
| run: sudo apt install -y libblas-dev liblapack-dev | |
| - name: install | |
| shell: bash | |
| run: | | |
| echo "$HOME/NJOY2016/build" >> $GITHUB_PATH | |
| $GITHUB_WORKSPACE/tools/ci/gha-install.sh | |
| - name: display-config | |
| shell: bash | |
| run: | | |
| openmc -v | |
| - name: cache-xs | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/nndc_hdf5 | |
| ~/endf-b-vii.1 | |
| key: ${{ runner.os }}-build-xs-cache-${{ hashFiles(format('{0}/tools/ci/download-xs.sh', github.workspace)) }} | |
| - name: before | |
| shell: bash | |
| run: $GITHUB_WORKSPACE/tools/ci/gha-before-script.sh | |
| - name: test | |
| shell: bash | |
| run: | | |
| CTEST_OUTPUT_ON_FAILURE=1 make test -C $GITHUB_WORKSPACE/build/ | |
| $GITHUB_WORKSPACE/tools/ci/gha-script.sh | |
| - name: Setup tmate debug session | |
| continue-on-error: true | |
| if: ${{ contains(env.COMMIT_MESSAGE, '[gha-debug]') }} | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 10 | |
| - name: Generate C++ coverage (gcovr) | |
| shell: bash | |
| run: | | |
| # Produce LCOV directly from gcov data in the build tree | |
| gcovr \ | |
| --root "$GITHUB_WORKSPACE" \ | |
| --object-directory "$GITHUB_WORKSPACE/build" \ | |
| --filter "$GITHUB_WORKSPACE/src" \ | |
| --filter "$GITHUB_WORKSPACE/include" \ | |
| --exclude "$GITHUB_WORKSPACE/src/external/.*" \ | |
| --exclude "$GITHUB_WORKSPACE/src/include/openmc/external/.*" \ | |
| --gcov-ignore-errors source_not_found \ | |
| --gcov-ignore-errors output_error \ | |
| --gcov-ignore-parse-errors suspicious_hits.warn \ | |
| --merge-mode-functions=separate \ | |
| --print-summary \ | |
| --lcov -o coverage-cpp.lcov || true | |
| - name: Merge C++ and Python coverage | |
| shell: bash | |
| run: | | |
| # Merge C++ and Python LCOV into a single file for upload | |
| cat coverage-cpp.lcov coverage-python.lcov > coverage.lcov | |
| - name: Upload coverage to Coveralls | |
| if: ${{ hashFiles('coverage.lcov') != '' }} | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| parallel: true | |
| flag-name: C++ and Python | |
| path-to-lcov: coverage.lcov | |
| coverage: | |
| needs: [filter-changes, main] | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Coveralls Finished | |
| if: ${{ needs.filter-changes.outputs.source_changed == 'true' }} | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| parallel-finished: true | |
| ci-pass: | |
| needs: [filter-changes, main, coverage] | |
| name: Check CI status | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check CI status | |
| run: | | |
| if [[ "${{ needs.filter-changes.outputs.source_changed }}" == "false" ]]; then | |
| echo "Documentation-only change - CI skipped successfully" | |
| exit 0 | |
| fi | |
| if [[ "${{ needs.main.result }}" == "success" && "${{ needs.coverage.result }}" == "success" ]]; then | |
| echo "CI passed" | |
| exit 0 | |
| fi | |
| echo "CI failed" | |
| exit 1 |