diff --git a/.github/workflows/Downgrade.yml b/.github/workflows/Downgrade.yml index a7c4f9caf99..b9bdca5aeac 100644 --- a/.github/workflows/Downgrade.yml +++ b/.github/workflows/Downgrade.yml @@ -27,9 +27,9 @@ jobs: downgrade_test: if: "!contains(github.event.head_commit.message, 'skip ci')" # We could also include the Julia version as in - # name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - Julia ${{ matrix.version }} - ${{ matrix.arch }} - ${{ github.event_name }} + # name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - Julia ${{ matrix.version }} - ${{ matrix.arch }} # to be more specific. However, that requires us updating the required CI tests whenever we update Julia. - name: Downgrade ${{ matrix.trixi_test }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: Downgrade ${{ matrix.trixi_test }} - ${{ matrix.os }} - ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -76,11 +76,11 @@ jobs: projects: ., test - uses: julia-actions/julia-buildpkg@v1 env: - PYTHON: "" + PYTHON: '' - name: Run tests without coverage uses: julia-actions/julia-runtest@v1 with: coverage: false env: - PYTHON: "" + PYTHON: '' TRIXI_TEST: ${{ matrix.trixi_test }} diff --git a/.github/workflows/GPUCompat.yml b/.github/workflows/GPUCompat.yml new file mode 100644 index 00000000000..335e1c83c4c --- /dev/null +++ b/.github/workflows/GPUCompat.yml @@ -0,0 +1,86 @@ +name: GPU Package Compatibility + +on: + pull_request: + paths-ignore: + - 'AUTHORS.md' + - 'CITATION.bib' + - 'CONTRIBUTING.md' + - 'LICENSE.md' + - 'NEWS.md' + - 'README.md' + - '.zenodo.json' + - '.github/workflows/benchmark.yml' + - '.github/workflows/CompatHelper.yml' + - '.github/workflows/TagBot.yml' + - 'benchmark/**' + - 'docs/**' + - 'utils/**' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + if: "!contains(github.event.head_commit.message, 'skip ci')" + name: ${{ matrix.os }} - ${{ matrix.arch }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - version: '1.10' + os: ubuntu-latest + arch: x64 + - version: '1.10' + os: windows-latest + arch: x64 + # CUDA.jl only supports 64-bit Linux and Windows, see https://github.com/JuliaGPU/CUDA.jl?tab=readme-ov-file#requirements + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Julia + uses: julia-actions/setup-julia@v2 + with: + version: ${{ matrix.version }} + arch: ${{ matrix.arch }} + + - name: Display version info + run: julia -e 'using InteractiveUtils; versioninfo(verbose=true)' + + - name: Cache Julia packages + uses: julia-actions/cache@v2 + + - name: Build project + uses: julia-actions/julia-buildpkg@v1 + + # Only CUDA.jl is needed for GPU compatibility test now + - name: Add CUDA.jl to environment + run: | + julia --project=. -e ' + using Pkg; + Pkg.activate(temp=true); + Pkg.develop(PackageSpec(path=pwd())); + Pkg.add("CUDA"); + Pkg.update()' + + # - name: Add Metal.jl to environment + # run: | + # julia --project=. -e ' + # using Pkg; + # Pkg.activate(temp=true); + # Pkg.develop(PackageSpec(path=pwd())); + # Pkg.add("Metal"); + # Pkg.update()' + + # - name: Add AMDGPU.jl to environment + # run: | + # julia --project=. -e ' + # using Pkg; + # Pkg.activate(temp=true); + # Pkg.develop(PackageSpec(path=pwd())); + # Pkg.add("AMDGPU"); + # Pkg.update()' diff --git a/.github/workflows/SpellCheck.yml b/.github/workflows/SpellCheck.yml index a40e187e82a..3d557915755 100644 --- a/.github/workflows/SpellCheck.yml +++ b/.github/workflows/SpellCheck.yml @@ -10,4 +10,4 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling - uses: crate-ci/typos@v1.27.0 + uses: crate-ci/typos@v1.28.1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c636ee8b0b..8862747fefc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,9 +44,9 @@ jobs: test: if: "!contains(github.event.head_commit.message, 'skip ci')" # We could also include the Julia version as in - # name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - Julia ${{ matrix.version }} - ${{ matrix.arch }} - ${{ github.event_name }} + # name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - Julia ${{ matrix.version }} - ${{ matrix.arch }} # to be more specific. However, that requires us updating the required CI tests whenever we update Julia. - name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -115,27 +115,27 @@ jobs: - uses: julia-actions/cache@v2 - uses: julia-actions/julia-buildpkg@v1 env: - PYTHON: "" + PYTHON: '' - name: Run tests without coverage uses: julia-actions/julia-runtest@v1 with: coverage: false env: - PYTHON: "" + PYTHON: '' TRIXI_TEST: ${{ matrix.trixi_test }} - name: Run tests with coverage uses: julia-actions/julia-runtest@v1 with: coverage: true env: - PYTHON: "" + PYTHON: '' TRIXI_TEST: ${{ matrix.trixi_test }} - uses: julia-actions/julia-processcoverage@v1 with: directories: src,examples,ext - - uses: codecov/codecov-action@v4 + - uses: codecov/codecov-action@v5 with: - file: ./lcov.info + files: ./lcov.info flags: unittests name: codecov-umbrella fail_ci_if_error: true diff --git a/.github/workflows/downstream.yml b/.github/workflows/downstream.yml index 939eb533ffc..13a01984827 100644 --- a/.github/workflows/downstream.yml +++ b/.github/workflows/downstream.yml @@ -46,9 +46,9 @@ jobs: test: if: "!contains(github.event.head_commit.message, 'skip ci')" # We could also include the Julia version as in - # name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - Julia ${{ matrix.version }} - ${{ matrix.arch }} - ${{ github.event_name }} + # name: ${{ matrix.trixi_test }} - ${{ matrix.os }} - Julia ${{ matrix.version }} - ${{ matrix.arch }} # to be more specific. However, that requires us updating the required CI tests whenever we update Julia. - name: ${{ matrix.package }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: ${{ matrix.package }} - ${{ matrix.os }} - ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: fail-fast: false diff --git a/NEWS.md b/NEWS.md index 2f71c45e57e..c187f229519 100644 --- a/NEWS.md +++ b/NEWS.md @@ -11,6 +11,8 @@ for human readability. - New time integrator `PairedExplicitRK3`, implementing the third-order paired explicit Runge-Kutta method with [Convex.jl](https://github.com/jump-dev/Convex.jl), [ECOS.jl](https://github.com/jump-dev/ECOS.jl), and [NLsolve.jl](https://github.com/JuliaNLSolvers/NLsolve.jl) ([#2008]) +- `LobattoLegendreBasis` and related datastructures made fully floating-type general, + enabling calculations with higher than double (`Float64`) precision ([#2128]) ## Changes when updating to v0.9 from v0.8.x diff --git a/Project.toml b/Project.toml index ac1af2c49eb..8a3a4772613 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Trixi" uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" authors = ["Michael Schlottke-Lakemper ", "Gregor Gassner ", "Hendrik Ranocha ", "Andrew R. Winters ", "Jesse Chan "] -version = "0.9.8-DEV" +version = "0.9.9-DEV" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" @@ -88,7 +88,7 @@ MuladdMacro = "0.2.2" NLsolve = "4.5.1" Octavian = "0.3.21" OffsetArrays = "1.12" -P4est = "0.4.9" +P4est = "0.4.12" Polyester = "0.7.10" PrecompileTools = "1.1" Preferences = "1.3" @@ -108,7 +108,7 @@ StaticArrays = "1.5" StrideArrays = "0.1.26" StructArrays = "0.6.11" SummationByPartsOperators = "0.5.41" -T8code = "0.7" +T8code = "0.7.2" TimerOutputs = "0.5.7" Triangulate = "2.2" TriplotBase = "0.1" diff --git a/README.md b/README.md index 70c28799f31..543a0339e41 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ installation and postprocessing procedures. Its features include: * Hierarchical quadtree/octree grid with adaptive mesh refinement * Forests of quadtrees/octrees with [p4est](https://github.com/cburstedde/p4est) via [P4est.jl](https://github.com/trixi-framework/P4est.jl) * High-order accuracy in space and time + * Arbitrary floating-point precision * Discontinuous Galerkin methods * Kinetic energy-preserving and entropy-stable methods based on flux differencing * Entropy-stable shock capturing @@ -260,6 +261,25 @@ To get in touch with the developers, [join us on Slack](https://join.slack.com/t/trixi-framework/shared_invite/zt-sgkc6ppw-6OXJqZAD5SPjBYqLd8MU~g) or [create an issue](https://github.com/trixi-framework/Trixi.jl/issues/new). +## Participating research groups +Participating research groups in alphabetical order: + +[Applied and Computational Mathematics, RWTH Aachen University :de:](https://www.acom.rwth-aachen.de) + +[Applied Mathematics, Department of Mathematics, University of Hamburg :de:](https://www.math.uni-hamburg.de/en/forschung/bereiche/am.html) + +[Division of Applied Mathematics, Department of Mathematics, Linköping University :sweden:](https://liu.se/en/employee/andwi94) + +[Computational and Applied Mathematics, Rice University :us:](https://jlchan.github.io/) + +[High-Performance Computing, Institute of Software Technology, German Aerospace Center (DLR) :de:](https://www.dlr.de/en/sc/about-us/departments/high-performance-computing) + +[High-Performance Scientific Computing, University of Augsburg :de:](https://hpsc.math.uni-augsburg.de) + +[Numerical Mathematics, Institute of Mathematics, Johannes Gutenberg University Mainz :de:](https://ranocha.de) + +[Numerical Simulation, Department of Mathematics and Computer Science, University of Cologne :de:](https://www.mi.uni-koeln.de/NumSim/) + ## Acknowledgments