diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c804f15..1e09c59 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -55,12 +55,12 @@ jobs: - name: Upload coverage to Codecov id: codecov_upload uses: codecov/codecov-action@v4 + continue-on-error: true if: matrix.python-version == '3.13' with: files: ./coverage.xml + token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Generate local coverage badge if: matrix.python-version == '3.13' && steps.codecov_upload.outcome == 'success' @@ -77,7 +77,7 @@ jobs: name: Update coverage badge needs: test-portable runs-on: ubuntu-latest - if: github.event_name == 'push' + if: github.event_name == 'push' && needs.test-portable.result == 'success' permissions: contents: write @@ -86,11 +86,13 @@ jobs: - name: Download local coverage badge uses: actions/download-artifact@v4 + continue-on-error: true with: name: coverage-badge path: tmp/coverage-badge - name: Commit local coverage badge + if: hashFiles('tmp/coverage-badge/coverage.svg') != '' run: | cp tmp/coverage-badge/coverage.svg docs/assets/coverage.svg if ! git diff --quiet -- docs/assets/coverage.svg; then diff --git a/README.md b/README.md index 4b17ff2..d2338db 100644 --- a/README.md +++ b/README.md @@ -60,34 +60,15 @@ data.to_hdf5("modes.h5") ## Physics -MicroMode solves the source-free frequency-domain Maxwell equations on a -rasterized Yee mode plane, - -$$ -\nabla\times\mathbf{E}=-i\omega\mu\mathbf{H}, -\qquad -\nabla\times\mathbf{H}=i\omega\epsilon\mathbf{E}, -$$ - -with modal fields $\mathbf{E},\mathbf{H}\propto e^{i k_0 n_\mathrm{eff} z}.$ +MicroMode solves the source-free frequency-domain Maxwell equations on a rasterized Yee mode plane, $\nabla\times\mathbf{E}=-i\omega\mu\mathbf{H}, \; \nabla\times\mathbf{H}=i\omega\epsilon\mathbf{E},$ with modal fields $\mathbf{E},\mathbf{H}\propto e^{i k_0 n_\mathrm{eff} z}.$ On diagonal material grids this becomes a transverse eigenproblem, - -$$ -A_\mathrm{diag} -\begin{bmatrix}E_x\\E_y\end{bmatrix} -= --n_\mathrm{eff}^2 -\begin{bmatrix}E_x\\E_y\end{bmatrix} -$$ - while full tensor or transformed grids use a first-order tensorial form. The detailed derivation is in [docs/physics-model.md](docs/physics-model.md), and -the public solver controls are summarized in -[docs/mode-solver-methods.md](docs/mode-solver-methods.md). +the public solver controls are summarized in [docs/mode-solver-methods.md](docs/mode-solver-methods.md). -## Performance +## Solver MicroMode is designed to make high-performance mode solving available without requiring users to install external solver stacks. The production backend is a