Skip to content

Commit 84007e1

Browse files
Adapt to Trixi v0.16 (#169)
* fix (only) exports * use ordinarydiffeq subpackages in covariant tri tests * distinguish tri vs quad icosahedron tests * fix tests * run formatter * add back serial dgmulti tri euler for coverage * revert * isolated polyester issue, apparently this fixes it * run formatter * use mesh-specialized * add solution_container and auxiliary_container * adapt to Trixi v 0.16 mainly adding backend arguments * update signatures to match Trixi.jl v0.16 * remove duplicated DGMulti stuff I added to keep downstream tests running during refactor --------- Co-authored-by: Tristan Montoya <montoya.tristan@gmail.com>
1 parent 097086e commit 84007e1

File tree

9 files changed

+51
-39
lines changed

9 files changed

+51
-39
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ Static = "0.8, 1"
3737
StaticArrayInterface = "1.5.1"
3838
StaticArrays = "1"
3939
StrideArrays = "0.1.28"
40-
Trixi = "0.15"
40+
Trixi = "0.16"
4141
julia = "1.10"

examples/advection/cartesian/elixir_cubed_sphere.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,17 @@ end
4848
# with central fluxes because of the curved geometry!
4949
@inline function Trixi.weak_form_kernel!(du, u,
5050
element,
51-
mesh::Union{StructuredMesh{2},
52-
UnstructuredMesh2D,
53-
P4estMesh{2}, T8codeMesh{2}},
51+
MeshT::Type{<:Union{StructuredMesh{2},
52+
StructuredMeshView{2},
53+
UnstructuredMesh2D,
54+
P4estMesh{2},
55+
P4estMeshView{2},
56+
T8codeMesh{2}}},
5457
nonconservative_terms::Trixi.True,
5558
equations::Trixi.AbstractEquations{3},
5659
dg::DGSEM, cache, alpha = true)
57-
Trixi.weak_form_kernel!(du, u, element, mesh, Trixi.False(), equations, dg, cache)
60+
Trixi.weak_form_kernel!(du, u, element, MeshT, Trixi.False(), equations, dg, cache,
61+
alpha)
5862
end
5963

6064
# Create a 2D cubed sphere mesh the size of the Earth

examples/advection/cartesian/elixir_quad_icosahedron.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,17 @@ end
4747
# with central fluxes because of the curved geometry!
4848
@inline function Trixi.weak_form_kernel!(du, u,
4949
element,
50-
mesh::Union{StructuredMesh{2},
51-
UnstructuredMesh2D,
52-
P4estMesh{2}, T8codeMesh{2}},
50+
MeshT::Type{<:Union{StructuredMesh{2},
51+
StructuredMeshView{2},
52+
UnstructuredMesh2D,
53+
P4estMesh{2},
54+
P4estMeshView{2},
55+
T8codeMesh{2}}},
5356
nonconservative_terms::Trixi.True,
5457
equations::Trixi.AbstractEquations{3},
5558
dg::DGSEM, cache, alpha = true)
56-
Trixi.weak_form_kernel!(du, u, element, mesh, Trixi.False(), equations, dg, cache)
59+
Trixi.weak_form_kernel!(du, u, element, MeshT, Trixi.False(), equations, dg, cache,
60+
alpha)
5761
end
5862

5963
# Create a 2D quad-based icosahedral mesh the size of the Earth

src/TrixiAtmo.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ using Setfield
3232
flux, flux_ec, flux_chandrashekar, flux_wintermeyer_etal,
3333
flux_fjordholm_etal, flux_nonconservative_wintermeyer_etal,
3434
flux_nonconservative_fjordholm_etal, FluxLMARS, flux_shima_etal,
35-
flux_ranocha, flux_kennedy_gruber
35+
flux_ranocha, flux_kennedy_gruber, trixi_backend
3636

3737
using Trixi: ln_mean, stolarsky_mean, inv_ln_mean
3838

src/solvers/dgmulti/dg.jl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ function Trixi.create_cache(mesh::DGMultiMesh{NDIMS}, equations::AbstractCovaria
1515
nvars = nvariables(equations)
1616
naux = n_aux_node_vars(equations)
1717

18-
# We are duplicating the contents of solution_container in the top-level cache, but
19-
# note that no actual data is being copied here, just references to the same arrays.
2018
u_values = Trixi.allocate_nested_array(uEltype, nvars, size(md.xq), dg)
2119
u_face_values = Trixi.allocate_nested_array(uEltype, nvars, size(md.xf), dg)
2220
flux_face_values = Trixi.allocate_nested_array(uEltype, nvars, size(md.xf), dg)
@@ -25,7 +23,6 @@ function Trixi.create_cache(mesh::DGMultiMesh{NDIMS}, equations::AbstractCovaria
2523
solution_container = (; u_values, u_face_values, flux_face_values,
2624
local_values_threaded)
2725

28-
# To parallel the solution container, we create an auxiliary container.
2926
aux_values = Trixi.allocate_nested_array(uEltype, naux, size(md.x), dg)
3027
aux_quad_values = Trixi.allocate_nested_array(uEltype, naux, size(md.xq), dg)
3128
aux_face_values = Trixi.allocate_nested_array(uEltype, naux, size(md.xf), dg)
@@ -57,12 +54,8 @@ function Trixi.create_cache(mesh::DGMultiMesh{NDIMS}, equations::AbstractCovaria
5754
rotated_flux_threaded = [Trixi.allocate_nested_array(uEltype, nvars, (rd.Nq,), dg)
5855
for _ in 1:Threads.maxthreadid()]
5956

60-
# For backwards compatibility with older DGMulti code, the solution is included in the
61-
# top-level cache. TODO: remove once DGMulti refactor is complete and stable.
6257
cache = (; md, weak_differentiation_matrices, lift_scalings, invJ, dxidxhatj,
63-
solution_container, u_values, u_face_values, flux_face_values,
64-
auxiliary_container, local_values_threaded, flux_threaded,
65-
rotated_flux_threaded)
58+
solution_container, auxiliary_container, flux_threaded, rotated_flux_threaded)
6659
return cache
6760
end
6861

src/solvers/dgmulti/dg_manifold_covariant.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ function Trixi.calc_volume_integral!(du, u,
8181
end
8282
end
8383

84-
function Trixi.calc_interface_flux!(cache, surface_integral::SurfaceIntegralWeakForm,
84+
function Trixi.calc_interface_flux!(cache,
85+
surface_integral::SurfaceIntegralWeakForm,
8586
mesh::DGMultiMesh,
8687
have_nonconservative_terms::False,
8788
equations::AbstractCovariantEquations{NDIMS},

src/solvers/dgsem_p4est/dg_2d_manifold_in_3d_cartesian.jl

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,27 @@ function Trixi.rhs!(du, u, t,
66
equations::AbstractEquations{3},
77
boundary_conditions, source_terms::Source,
88
dg::DG, cache) where {Source}
9+
backend = trixi_backend(u)
910

1011
# Reset du
1112
Trixi.@trixi_timeit Trixi.timer() "reset ∂u/∂t" Trixi.set_zero!(du, dg, cache)
1213

1314
# Calculate volume integral
1415
Trixi.@trixi_timeit Trixi.timer() "volume integral" begin
15-
Trixi.calc_volume_integral!(du, u, mesh,
16+
Trixi.calc_volume_integral!(backend, du, u, mesh,
1617
Trixi.have_nonconservative_terms(equations),
1718
equations,
1819
dg.volume_integral, dg, cache)
1920
end
2021

2122
# Prolong solution to interfaces
2223
Trixi.@trixi_timeit Trixi.timer() "prolong2interfaces" begin
23-
Trixi.prolong2interfaces!(cache, u, mesh, equations, dg)
24+
Trixi.prolong2interfaces!(backend, cache, u, mesh, equations, dg)
2425
end
2526

2627
# Calculate interface fluxes
2728
Trixi.@trixi_timeit Trixi.timer() "interface flux" begin
28-
Trixi.calc_interface_flux!(cache.elements.surface_flux_values, mesh,
29+
Trixi.calc_interface_flux!(backend, cache.elements.surface_flux_values, mesh,
2930
Trixi.have_nonconservative_terms(equations),
3031
equations,
3132
dg.surface_integral, dg, cache)
@@ -56,12 +57,13 @@ function Trixi.rhs!(du, u, t,
5657

5758
# Calculate surface integrals
5859
Trixi.@trixi_timeit Trixi.timer() "surface integral" begin
59-
Trixi.calc_surface_integral!(du, u, mesh, equations,
60+
Trixi.calc_surface_integral!(backend, du, u, mesh, equations,
6061
dg.surface_integral, dg, cache)
6162
end
6263

6364
# Apply Jacobian from mapping to reference element
64-
Trixi.@trixi_timeit Trixi.timer() "Jacobian" Trixi.apply_jacobian!(du, mesh,
65+
Trixi.@trixi_timeit Trixi.timer() "Jacobian" Trixi.apply_jacobian!(backend, du,
66+
mesh,
6567
equations,
6668
dg, cache)
6769

@@ -76,9 +78,12 @@ end
7678
# Weak-form kernel for 3D equations solved in 2D manifolds
7779
@inline function Trixi.weak_form_kernel!(du, u,
7880
element,
79-
mesh::Union{StructuredMesh{2},
80-
UnstructuredMesh2D,
81-
P4estMesh{2}, T8codeMesh{2}},
81+
::Type{<:Union{StructuredMesh{2},
82+
StructuredMeshView{2},
83+
UnstructuredMesh2D,
84+
P4estMesh{2},
85+
P4estMeshView{2},
86+
T8codeMesh{2}}},
8287
nonconservative_terms::False,
8388
equations::AbstractEquations{3},
8489
dg::DGSEM, cache, alpha = true)

src/solvers/dgsem_p4est/dg_2d_manifold_in_3d_covariant.jl

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,26 @@ function Trixi.rhs!(du, u, t,
1010
equations::AbstractCovariantEquations{2},
1111
boundary_conditions, source_terms::Source,
1212
dg::DG, cache) where {Source}
13+
backend = trixi_backend(u)
14+
1315
# Reset du
1416
Trixi.@trixi_timeit Trixi.timer() "reset ∂u/∂t" Trixi.set_zero!(du, dg, cache)
1517

1618
# Calculate volume integral
1719
Trixi.@trixi_timeit Trixi.timer() "volume integral" begin
18-
Trixi.calc_volume_integral!(du, u, mesh,
20+
Trixi.calc_volume_integral!(backend, du, u, mesh,
1921
Trixi.have_nonconservative_terms(equations),
2022
equations, dg.volume_integral, dg, cache)
2123
end
2224

2325
# Prolong solution to interfaces
2426
Trixi.@trixi_timeit Trixi.timer() "prolong2interfaces" begin
25-
Trixi.prolong2interfaces!(cache, u, mesh, equations, dg)
27+
Trixi.prolong2interfaces!(backend, cache, u, mesh, equations, dg)
2628
end
2729

2830
# Calculate interface fluxes
2931
Trixi.@trixi_timeit Trixi.timer() "interface flux" begin
30-
Trixi.calc_interface_flux!(cache.elements.surface_flux_values, mesh,
32+
Trixi.calc_interface_flux!(backend, cache.elements.surface_flux_values, mesh,
3133
Trixi.have_nonconservative_terms(equations),
3234
equations, dg.surface_integral, dg, cache)
3335
end
@@ -48,12 +50,14 @@ function Trixi.rhs!(du, u, t,
4850

4951
# Calculate surface integrals
5052
Trixi.@trixi_timeit Trixi.timer() "surface integral" begin
51-
Trixi.calc_surface_integral!(du, u, mesh, equations, dg.surface_integral, dg,
53+
Trixi.calc_surface_integral!(backend, du, u, mesh, equations,
54+
dg.surface_integral, dg,
5255
cache)
5356
end
5457

5558
# Apply Jacobian from mapping to reference element
56-
Trixi.@trixi_timeit Trixi.timer() "Jacobian" Trixi.apply_jacobian!(du, mesh,
59+
Trixi.@trixi_timeit Trixi.timer() "Jacobian" Trixi.apply_jacobian!(backend, du,
60+
mesh,
5761
equations, dg,
5862
cache)
5963

@@ -92,7 +96,7 @@ end
9296

9397
# Weak form kernel which uses contravariant flux components, passing the geometric
9498
# information contained in the auxiliary variables to the flux function
95-
@inline function Trixi.weak_form_kernel!(du, u, element, mesh::P4estMesh{2},
99+
@inline function Trixi.weak_form_kernel!(du, u, element, ::Type{<:P4estMesh{2}},
96100
nonconservative_terms::False,
97101
equations::AbstractCovariantEquations{2},
98102
dg::DGSEM, cache, alpha = true)
@@ -126,7 +130,7 @@ end
126130

127131
# Flux differencing kernel which uses contravariant flux components, passing the geometric
128132
# information contained in the auxiliary variables to the flux function
129-
@inline function Trixi.flux_differencing_kernel!(du, u, element, mesh::P4estMesh{2},
133+
@inline function Trixi.flux_differencing_kernel!(du, u, element, ::Type{<:P4estMesh{2}},
130134
nonconservative_terms::False,
131135
equations::AbstractCovariantEquations{2},
132136
volume_flux, dg::DGSEM, cache,
@@ -180,7 +184,8 @@ end
180184
# Non-conservative flux differencing kernel which uses contravariant flux components,
181185
# passing the geometric information contained in the auxiliary variables to the flux
182186
# function
183-
@inline function Trixi.flux_differencing_kernel!(du, u, element, mesh::P4estMesh{2},
187+
@inline function Trixi.flux_differencing_kernel!(du, u, element,
188+
MeshT::Type{<:P4estMesh{2}},
184189
nonconservative_terms::True,
185190
equations::AbstractCovariantEquations{2},
186191
volume_flux, dg::DGSEM, cache,
@@ -190,7 +195,7 @@ end
190195
symmetric_flux, nonconservative_flux = volume_flux
191196

192197
# Apply the symmetric flux as usual
193-
Trixi.flux_differencing_kernel!(du, u, element, mesh, False(), equations,
198+
Trixi.flux_differencing_kernel!(du, u, element, MeshT, False(), equations,
194199
symmetric_flux, dg, cache, alpha)
195200

196201
for j in eachnode(dg), i in eachnode(dg)
@@ -230,7 +235,7 @@ end
230235
# Calculate the interface flux directly in the local coordinate system. This function
231236
# differs from the standard approach in Trixi.jl in that one does not need to pass the
232237
# normal vector to the pointwise flux calculation.
233-
function Trixi.calc_interface_flux!(surface_flux_values,
238+
function Trixi.calc_interface_flux!(backend::Nothing, surface_flux_values,
234239
mesh::P4estMesh{2},
235240
nonconservative_terms,
236241
equations::AbstractCovariantEquations{2},
@@ -452,7 +457,7 @@ function Trixi.calc_sources!(du, u, t, source_terms::Nothing,
452457
end
453458

454459
# Apply the exact Jacobian stored in auxiliary variables
455-
function Trixi.apply_jacobian!(du, mesh::P4estMesh{2},
460+
function Trixi.apply_jacobian!(backend::Nothing, du, mesh::P4estMesh{2},
456461
equations::AbstractCovariantEquations{2},
457462
dg::DG, cache)
458463
(; aux_node_vars) = cache.auxiliary_variables

test/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ NLsolve = "4.5.1"
1515
OrdinaryDiffEqLowStorageRK = "1.2"
1616
OrdinaryDiffEqSSPRK = "1.2"
1717
Test = "1"
18-
Trixi = "0.15"
18+
Trixi = "0.16"
1919
TrixiTest = "0.1.3, 0.2"

0 commit comments

Comments
 (0)