Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
8ce8682
Avoid repeated global memory operations in `prolong2interfaces!` for …
ranocha Feb 27, 2026
bd92dd3
Remove unused tols in examples, Update test vals due to `OrdinaryDiff…
DanielDoehring Mar 2, 2026
c2cea87
Bump the all-github-actions group with 3 updates (#2840)
dependabot[bot] Mar 2, 2026
0dedef7
Gauss-Legendre: Boundary Coordinates for 1D `TreeMesh` (#2827)
DanielDoehring Mar 2, 2026
6fd4974
qualify access in docstring (#2837)
JoshuaLampert Mar 2, 2026
ac7a29e
Gauss-Legendre DGSEM Solver: Boundary Nodes for 2D `TreeMesh` (#2841)
DanielDoehring Mar 3, 2026
7fb08bb
Gauss-Legendre DGSEM Solver: 1D Parabolic `TreeMesh` (#2842)
DanielDoehring Mar 3, 2026
9a8a890
Add 3d local limiting for conservative variables (#2763)
bennibolm Mar 3, 2026
75cbce0
Gauss-Legendre DGSEM: 1D Parabolic Convergence Test (#2843)
DanielDoehring Mar 3, 2026
de45754
Use julia-downgrade-compat@v2 (#2507)
JoshuaLampert Mar 3, 2026
05f9c49
Restructure resizing process of subcell limiting containers (#2836)
bennibolm Mar 3, 2026
75a6d41
Sc/p4est view coupled (#2366)
SimonCan Mar 4, 2026
c807b9a
set version to v0.15.7
ranocha Mar 4, 2026
5763291
set development version to v0.15.8-DEV
ranocha Mar 4, 2026
c525319
Gauss-Legendre DGSEM Solver: 2D `TreeMesh` Parabolic (#2845)
DanielDoehring Mar 4, 2026
ce6c055
`flux_ruedaramirez_etal` normal direction (#2446)
SimonCan Mar 5, 2026
fb895f0
Add initial support for subcell limiting with 3D TreeMesh (#2846)
bennibolm Mar 5, 2026
059ddcc
Add 3d support for nonperiodic simulations with subcell limiting (#2844)
bennibolm Mar 5, 2026
e814ef4
Refactor `StructuredMesh` (#2831)
DanielDoehring Mar 7, 2026
0ffa20f
Switch file hosting from Sciebo to Zenodo (#2851)
DanielDoehring Mar 9, 2026
1711306
Add PlotData2D regression tests (Fixes #2335) (#2765)
ShahuK283 Mar 10, 2026
3b570ed
Adaptive Volume Integral for `DGMulti`: WF & FD, `Polynomial()` & `Af…
DanielDoehring Mar 11, 2026
f53b56c
Add local subcell limiting for `TreeMesh{3}` (#2848)
bennibolm Mar 12, 2026
3dd1291
set version to v0.15.8
ranocha Mar 12, 2026
f380eb1
set development version to v0.15.9-DEV
ranocha Mar 12, 2026
91bea04
Update Jesse Chan's affiliation to UT Austin (#2860)
jlchan Mar 13, 2026
18a6ac7
Relocate functions from `P4estMesh` folder to `TreeMesh` folder (#2859)
bennibolm Mar 13, 2026
20fcf6b
Gauss-Legendre on 1D periodic `StructuredMesh` (#2828)
DanielDoehring Mar 15, 2026
64b941e
Refactor DGMulti to use a shared array container (#2853)
jlchan Mar 15, 2026
9d6e4b4
Add `OrdinaryDiffEqDifferentiation` to test (#2865)
DanielDoehring Mar 15, 2026
1f32f50
Gauss-Legendre `DGSEM` Solver: `Structured` 1D: Boundaries (#2864)
DanielDoehring Mar 15, 2026
e7e1600
Add LLM statement to CONTRIBUTING.md (#2863)
jlchan Mar 19, 2026
15a276a
set version to v0.15.9
ranocha Mar 20, 2026
a59fabf
set development version to v0.15.10-DEV
ranocha Mar 20, 2026
fec4c51
Revert unintended `adaptive = false` (#2876)
DanielDoehring Mar 23, 2026
e6a0a8f
Convergence Test MHD 3D (Non-Alfwen Wave) (#2875)
DanielDoehring Mar 23, 2026
ae42627
Refactor DGMulti by consolidating functionality into `local_flux_diff…
jlchan Mar 24, 2026
36c81b6
Refactor Plots.jl integration into native package extension (#2216) (…
ShahuK283 Mar 25, 2026
c5395e5
Fix syntax for VisualizationCallback parameters (#2883)
TJP-Karpowski Mar 26, 2026
d6c26eb
set version to v0.15.10
ranocha Mar 26, 2026
927a157
set development version to v0.16.0-DEV
ranocha Mar 26, 2026
ff0779d
More robust LDG Switch for `P4estMesh` (#2871)
DanielDoehring Mar 26, 2026
bfb5399
Initial GPU support for P4estMesh 2D and 3D using simple KernelAbstra…
benegee Mar 26, 2026
8dbae27
Rename "viscous" to "parabolic" in general non-fluids settings (#2868)
tristanmontoya Mar 26, 2026
7eabca2
set version to v0.16.0
ranocha Mar 26, 2026
4c3bf99
set development version to v0.16.1-DEV
ranocha Mar 26, 2026
cc71756
CompatHelper: bump compat for Trixi to 0.16 for package benchmark, (k…
github-actions[bot] Mar 29, 2026
3c198c3
Add synchronization statements to ensure timer output correctness on …
vchuravy Mar 29, 2026
aca6995
reorder dependency loading in elixi_advection_diffusion_implicit_spar…
vchuravy Mar 29, 2026
f4d3eab
Merge `main`
bennibolm Mar 30, 2026
23fbe55
Fix subcell specific stuff
bennibolm Mar 30, 2026
3e222d5
Merge branch 'main' into merge-main-subcell
bennibolm Mar 30, 2026
de9d37b
Fix
bennibolm Mar 30, 2026
6758513
Fix
bennibolm Mar 30, 2026
2bd2175
Fix
bennibolm Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,3 @@ updates:
all-github-actions:
patterns:
- "*"
ignore:
- dependency-name: "julia-actions/julia-downgrade-compat"
versions: [ ">=2.0.0" ]
26 changes: 16 additions & 10 deletions .github/workflows/Downgrade.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ jobs:
# - performance_specializations_part1
# - performance_specializations_part2
# - mpi
- threaded
# - threaded
- downgrade
steps:
- uses: actions/checkout@v6
- uses: julia-actions/setup-julia@v2
Expand All @@ -75,17 +76,22 @@ jobs:
arch: ${{ matrix.arch }}
- run: julia -e 'using InteractiveUtils; versioninfo(verbose=true)'
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-downgrade-compat@v1
- uses: julia-actions/julia-downgrade-compat@v2
with:
skip: LinearAlgebra,Printf,SparseArrays,UUIDs,DelimitedFiles,Test,Downloads,Random
projects: ., test
- uses: julia-actions/julia-buildpkg@v1
mode: forcedeps
# We run the tests manually instead of using julia-action/julia-builpkg and julia-action/julia-runtest or `Pkg.test`
# because otherwise the downgraded Manifest.toml is not used in the tests under julia <v1.12
# see also https://github.com/julia-actions/julia-downgrade-compat/blob/00f940b7be2b50389571ed016d603be561649103/README.md#L89
- name: Run tests
run: |
julia --project=test --color=yes -e '
import Pkg
Pkg.develop(Pkg.PackageSpec(path=pwd()))
Pkg.instantiate()
Pkg.status(; mode = Pkg.PKGMODE_MANIFEST)
include("test/runtests.jl")
'
env:
PYTHON: ''
- name: Run tests without coverage
uses: julia-actions/julia-runtest@v1
with:
coverage: false
env:
PYTHON: ''
TRIXI_TEST: ${{ matrix.trixi_test }}
2 changes: 1 addition & 1 deletion .github/workflows/SpellCheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ jobs:
- name: Checkout Actions Repository
uses: actions/checkout@v6
- name: Check spelling
uses: crate-ci/typos@v1.42.3
uses: crate-ci/typos@v1.44.0
2 changes: 1 addition & 1 deletion .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
run: julia --project=benchmark/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
- name: Run benchmarks
run: julia --project=benchmark/ --color=yes benchmark/run_benchmarks.jl
- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
with:
name: my-artifact
path: benchmark/results*.md
7 changes: 4 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ jobs:
- performance_specializations
- mpi
- threaded
- kernelabstractions
include:
- version: '1.11'
os: ubuntu-latest
Expand Down Expand Up @@ -163,7 +164,7 @@ jobs:
if: ${{ !cancelled() }}
run: |
cp ./lcov.info ./lcov-${{ matrix.trixi_test }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }}.info
- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
with:
name: lcov-${{ matrix.trixi_test }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }}
path: ./lcov-${{ matrix.trixi_test }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }}.info
Expand All @@ -187,7 +188,7 @@ jobs:
# At first, we check out the repository and download all artifacts
# (and list files for debugging).
- uses: actions/checkout@v6
- uses: actions/download-artifact@v7
- uses: actions/download-artifact@v8
- run: ls -R
# Next, we merge the individual coverage files and upload
# the combined results to Coveralls.
Expand All @@ -210,7 +211,7 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: ./lcov.info
# Upload merged coverage data as artifact for debugging
- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
with:
name: lcov
path: ./lcov.info
Expand Down
2 changes: 1 addition & 1 deletion AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ provided substantial additions or modifications. Together, these two groups form
* [Andrew Winters](https://liu.se/en/employee/andwi94),
Linköping University, Sweden
* [Jesse Chan](https://jlchan.github.io),
Rice University, US
UT Austin, US
* [Andrés Rueda-Ramírez](https://andres.rueda-ramirez.com),
Polytechnic University of Madrid (UPM), Spain

Expand Down
8 changes: 8 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ Trixi.jl and its contributions are licensed under the MIT license (see
contributions are in conformance with the *Developer Certificate of Origin
(Version 1.1)*, which is reproduced below.

## LLM/AI usage

PRs which make use of LLMs and AI tools are allowed. However, because an LLM-assisted PR may have different issues than human-only PRs and necessitate different review styles, we request that PRs disclose any LLM contributions.

As before, all PRs are expected to be of high quality, and when possible, the developers will work with submitters to help achieve this. You are responsible for any code you submit, regardless of whether it was manually written or generated by AI. You should understand and explain the code you submit, as well as existing related code.

We encourage contributors to pre-check their PRs against our [checklist](https://github.com/trixi-framework/Trixi.jl/blob/main/.github/review-checklist.md), for example through manual review, using AI-based tools, or a combination of the two.

## Developer Certificate of Origin (Version 1.1)
The following text was taken from
[https://developercertificate.org](https://developercertificate.org):
Expand Down
48 changes: 44 additions & 4 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,41 @@ Trixi.jl follows the interpretation of
used in the Julia ecosystem. Notable changes will be documented in this file
for human readability.

## Changes when updating to v0.16 from v0.15.x

#### Changed

- The implementation of the local DG (`ViscousFormulationLocalDG`) `solver_parabolic` has been changed for the `P4estMesh`.
In particular, instead of computing the `ldg_switch` as the dot product of the normal direction with ones,
i.e., summing up the normal components, the `ldg_switch` is now selected as
the sign of the maximum (in absolute value sense) normal direction component,
which corresponds to the dominant direction of the interface normal.
This might change results slightly for some meshes where the sum of the normal might be close to zero,
thus introducing some spurious switch assignments ([#2871]).
- The word "viscous" is now used only where it refers specifically to fluid viscosity.
The word "parabolic" is used in more general contexts.
In particular, viscosity is no longer used as a proxy for any parabolic/diffusive process such as heat conduction.
For example, `ViscousFormulationLocalDG` is now `ParabolicFormulationLocalDG` and
`ViscousFormulationBassiRebay1` is now `ParabolicFormulationBassiRebay1`.
For consistency, `cfl_advective` and `cfl_diffusive` have also been renamed `cfl_hyperbolic` and `cfl_parabolic` ([#2868]).
Moreover, some internal functions have been renamed accordingly, including the results shown by the timer outputs after running a simulation.

#### Added

- Introducing GPU support: Based on work by Jan Kraus and Lars Christmann, Trixi.jl can
now partly be executed on GPUs. This includes simulations with flux differencing on
`P4estMesh` in 2D and 3D. Adaptive mesh refinement, multi-GPU, source terms, and callbacks
are not available, yet. Offloading is achieved via KernelAbstractions.jl kernels,
which, at the moment, execute the same code as usually run on CPUs. A backend is selected
by passing an appropriate data type as keyword argument `storage_type` to
`semidiscretize`. See the
[heterogeneous](https://trixi-framework.github.io/TrixiDocumentation/dev/heterogeneous/)
section for some instructions on how to port kernels. This is however still preliminaray
and will change.
GPU kernels are currently CI-tested on NVIDIA GPUs in a buildkite workflow using
`TRIXI_TEST=CUDA` ([#2590]).


## Changes in the v0.15 lifecycle

#### Added
Expand All @@ -14,19 +49,24 @@ This is useful for (locally) diffusion-dominated problems.
This enables in particular adaptive mesh refinement for that solver-mesh combination ([#2712]).
- Added functionality to `ScalarPlotData2D` allowing visualization a field provided by a user-defined scalar function ([#2796]).
- Added `NonIdealCompressibleEuler2D` ([#2768]).
- Generalization of `VolumeIntegralShockCapturingHG` and `VolumeIntegralShockCapturingRRG` to support different volume integrals on the
- Generalization of `VolumeIntegralShockCapturingHG` and `VolumeIntegralShockCapturingRRG` to support different volume integrals on the
non-stabilized and stabilized elements/cells.
The generalized volume integral is called `VolumeIntegralShockCapturingHGType` and takes the three keyword arguments `volume_integral_default`,
`volume_integral_blend_high_order`, and `volume_integral_blend_low_order` besides the usual `indicator` argument.
In particular, `volume_integral_default` may be e.g. `VolumeIntegralWeakForm` or `VolumeIntegralAdaptive`, i.e.,
the non-stabilized elements/cells are no longer restricted to `VolumeIntegralFluxDifferencing` only ([#2802]).
- Added `IndicatorEntropyCorrection`. When combined with `VolumeIntegralAdaptive`, this blends together a stabilized and non-stabilized
volume integral based on the violation of a volume entropy condition. `IndicatorEntropyCorrectionShockCapturingCombined` additionally
guides the blending by taking the maximum of the entropy correction indicator and a shock capturing indicator ([#2764]).
- Added `IndicatorEntropyCorrection`. When combined with `VolumeIntegralAdaptive`, this blends together a stabilized and non-stabilized
volume integral based on the violation of a volume entropy condition. `IndicatorEntropyCorrectionShockCapturingCombined` additionally
guides the blending by taking the maximum of the entropy correction indicator and a shock capturing indicator ([#2764]).
- The second-order subcell volume integral is no longer limited to reconstruction in primitive variables.
Instead, it is possible to reconstruct in custom variables, if functions `cons2recon` and `recon2cons` are provided to
`VolumeIntegralPureLGLFiniteVolumeO2` and `VolumeIntegralShockCapturingRRG`([#2817]).
- Add Legendre-Gauss basis for DGSEM and implement solver (`VolumeIntegralWeakForm` and `SurfaceIntegralWeakForm` only) support for conforming 1D & 2D `TreeMesh`es ([#1965]).
- Extended 3D support for subcell limiting was added ([#2763], [#2846], [#2844], [#2848]).
In the new version, local (minimum and maximum) limiting for conservative variables (using the
keyword `local_twosided_variables_cons` in `SubcellLimiterIDP()`) with `P4estMesh` is supported.
The support was extended to nonperiodic `P4estMesh{3}`es.
Moreover, initial support for `TreeMesh{3}` including positivity limiting and local limiting on periodic meshes was added.

## Changes when updating to v0.15 from v0.14.x

Expand Down
49 changes: 25 additions & 24 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "Trixi"
uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb"
version = "0.15.7-DEV"
version = "0.16.1-DEV"
authors = ["Michael Schlottke-Lakemper <michael.schlottke-lakemper@uni-a.de>", "Gregor Gassner <ggassner@uni-koeln.de>", "Hendrik Ranocha <mail@ranocha.de>", "Andrew R. Winters <andrew.ross.winters@liu.se>", "Jesse Chan <jesse.chan@rice.edu>", "Andrés Rueda-Ramírez <am.rueda@upm.es>"]

[deps]
Expand Down Expand Up @@ -33,7 +33,6 @@ Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
SimpleUnPack = "ce78b400-467f-4804-87d8-8f486da07d0a"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
Expand All @@ -59,63 +58,65 @@ Convex = "f65535da-76fb-5f13-bab9-19810c17039a"
ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199"
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5"

[extensions]
TrixiCUDAExt = "CUDA"
TrixiConvexECOSExt = ["Convex", "ECOS"]
TrixiMakieExt = "Makie"
TrixiNLsolveExt = "NLsolve"
TrixiPlotsExt = "Plots"
TrixiSparseConnectivityTracerExt = "SparseConnectivityTracer"

[compat]
Accessors = "0.1.36"
Adapt = "4.1"
Accessors = "0.1.42"
Adapt = "4.3"
CUDA = "5.8.2"
CodeTracking = "1.0.5, 2, 3"
ConstructionBase = "1.5"
ConstructionBase = "1.5.8"
Convex = "0.16"
DataStructures = "0.18.15, 0.19"
DataStructures = "0.19"
DelimitedFiles = "1"
DiffEqBase = "6.174"
DiffEqCallbacks = "2.35, 3, 4"
DiffEqBase = "6.194"
DiffEqCallbacks = "4.9"
Downloads = "1.6"
ECOS = "1.1.2"
EllipsisNotation = "1.0"
FillArrays = "1.9"
ForwardDiff = "0.10.36, 1"
HDF5 = "0.16.10, 0.17"
KernelAbstractions = "0.9.36"
FillArrays = "1.13"
ForwardDiff = "0.10.38, 1"
HDF5 = "0.17"
KernelAbstractions = "0.9.38"
LinearAlgebra = "1"
LinearMaps = "2.7, 3.0"
LoopVectorization = "0.12.171"
MPI = "0.20.22"
Makie = "0.21, 0.22, 0.23, 0.24"
Makie = "0.22, 0.23, 0.24"
MuladdMacro = "0.2.4"
NLsolve = "4.5.1"
Octavian = "0.3.28"
OffsetArrays = "1.13"
P4est = "0.4.12"
Plots = "1.38.13"
Polyester = "=0.7.16, 0.7.18"
PrecompileTools = "1.2"
Preferences = "1.4"
PrecompileTools = "1.2.1"
Preferences = "1.5"
Printf = "1"
RecipesBase = "1.3.4"
RecursiveArrayTools = "3.31.1"
Reexport = "1.2"
Requires = "1.3"
SciMLBase = "2.92.0"
RecursiveArrayTools = "3.37"
Reexport = "1.2.2"
SciMLBase = "2.141.0"
SimpleUnPack = "1.1"
SparseArrays = "1"
SparseConnectivityTracer = "1.0.1"
StableRNGs = "1.0.2"
StartUpDG = "1.1.5"
Static = "1.1.1"
StaticArrayInterface = "1.5.1"
StaticArrays = "1.9"
Static = "1.3"
StaticArrayInterface = "1.8"
StaticArrays = "1.9.8"
StrideArrays = "0.1.29"
StructArrays = "0.6.20, 0.7"
SummationByPartsOperators = "0.5.52"
StructArrays = "0.7"
SummationByPartsOperators = "0.5.72"
T8code = "0.7.4"
TimerOutputs = "0.5.25"
Triangulate = "2.2, 3"
Expand Down
16 changes: 16 additions & 0 deletions benchmark/CUDA/Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[deps]
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
OrdinaryDiffEqLowStorageRK = "b0944070-b475-4768-8dec-fb6eb410534d"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
Trixi = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb"

[sources]
Trixi = {path = "../.."}

[compat]
CUDA = "5.8.2"
JSON = "1.4.0"
OrdinaryDiffEqLowStorageRK = "1.12.0"
TimerOutputs = "0.5.25"
Trixi = "0.16"
76 changes: 76 additions & 0 deletions benchmark/CUDA/elixir_euler_taylor_green_vortex.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using OrdinaryDiffEqLowStorageRK
using Trixi

###############################################################################
# semidiscretization of the compressible Euler equations

equations = CompressibleEulerEquations3D(1.4)

function initial_condition_taylor_green_vortex(x, t,
equations::CompressibleEulerEquations3D)
A = 1.0 # magnitude of speed
Ms = 0.1 # maximum Mach number

rho = 1.0
v1 = A * sin(x[1]) * cos(x[2]) * cos(x[3])
v2 = -A * cos(x[1]) * sin(x[2]) * cos(x[3])
v3 = 0.0
p = (A / Ms)^2 * rho / equations.gamma # scaling to get Ms
p = p +
1.0 / 16.0 * A^2 * rho *
(cos(2 * x[1]) * cos(2 * x[3]) +
2 * cos(2 * x[2]) + 2 * cos(2 * x[1]) + cos(2 * x[2]) * cos(2 * x[3]))

return prim2cons(SVector(rho, v1, v2, v3, p), equations)
end

initial_condition = initial_condition_taylor_green_vortex

volume_flux = flux_ranocha
surface_flux = flux_lax_friedrichs
volume_integral = VolumeIntegralFluxDifferencing(volume_flux)
solver = DGSEM(polydeg = 5, surface_flux = surface_flux, volume_integral = volume_integral)

coordinates_min = (-1.0, -1.0, -1.0) .* pi
coordinates_max = (1.0, 1.0, 1.0) .* pi

initial_refinement_level = 1
trees_per_dimension = (4, 4, 4)

mesh = P4estMesh(trees_per_dimension, polydeg = 1,
coordinates_min = coordinates_min, coordinates_max = coordinates_max,
periodicity = true, initial_refinement_level = initial_refinement_level)

semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver;
boundary_conditions = boundary_condition_periodic)

###############################################################################
# ODE solvers, callbacks etc.

tspan = (0.0, 100.0)
ode = semidiscretize(semi, tspan; storage_type = nothing, real_type = nothing)

summary_callback = SummaryCallback()

stepsize_callback = StepsizeCallback(cfl = 0.1)

callbacks = CallbackSet(summary_callback,
stepsize_callback)

###############################################################################
# run the simulation

maxiters = 200
run_profiler = false

# disable warnings when maxiters is reached
integrator = init(ode, CarpenterKennedy2N54(williamson_condition = false),
dt = 1.0,
save_everystep = false, callback = callbacks,
maxiters = maxiters, verbose = false)
if run_profiler
prof_result = CUDA.@profile solve!(integrator)
else
solve!(integrator)
prof_result = nothing
end
Loading
Loading