Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
bc82cd7
Refactoring shock capturing for DGMulti
jlchan Mar 10, 2026
c53983b
formatting
jlchan Mar 10, 2026
1ec8cde
Refactor local_flux_differencing! to eliminate LazyMatrixLinearCombo
jlchan Mar 11, 2026
e07f3bf
formatting
jlchan Mar 11, 2026
14502ee
Restore hadamard_sum! overload for NonAffine curved meshes
jlchan Mar 11, 2026
40f2539
Fix sbp.jl FD-SBP volume integral after hadamard_sum! cleanup
jlchan Mar 11, 2026
66769ce
Restore upper-triangular comment in hadamard_sum! NonAffine overload
jlchan Mar 11, 2026
5d78986
move `flux_differencing_kernel!` directly into volume_integral_kernel!
jlchan Mar 11, 2026
69088b3
add alpha=true to allow for accumulation in volume_integral_kernel!
jlchan Mar 11, 2026
4f4ef0c
move `low_order_flux_differencing!` into `volume_integral_kernel!`
jlchan Mar 11, 2026
be539cb
comments
jlchan Mar 11, 2026
7a88484
move hadamard_sum functionality into local_flux_differencing!
jlchan Mar 11, 2026
1bd2822
fix tests - add alpha=true to volume_integral_kernel!
jlchan Mar 11, 2026
5fefc1f
fix
jlchan Mar 11, 2026
a799d8d
Merge branch 'main' into jc/sbp_shock_capturing
jlchan Mar 11, 2026
e518859
format
jlchan Mar 11, 2026
786b03a
Merge remote-tracking branch 'jlchan/jc/sbp_shock_capturing' into jc/…
jlchan Mar 11, 2026
cd1c7b5
remove unused import
jlchan Mar 11, 2026
bc43605
comments
jlchan Mar 11, 2026
d148e8d
remove some boilerplate
jlchan Mar 11, 2026
7628c91
use du_local instead of fluxdiff_local
jlchan Mar 11, 2026
b2e0f13
renaming cache variable for consistency
jlchan Mar 11, 2026
1062407
remove currently unused cache variable
jlchan Mar 11, 2026
d8b8761
Merge branch 'main' into jc/sbp_shock_capturing
DanielDoehring Mar 12, 2026
ccb0f9f
Merge branch 'main' into jc/sbp_shock_capturing
jlchan Mar 13, 2026
0f47df9
Merge branch 'main' into jc/sbp_shock_capturing
DanielDoehring Mar 13, 2026
e2b490a
Merge branch 'main' into jc/sbp_shock_capturing
jlchan Mar 14, 2026
5ca97f0
renaming
jlchan Mar 15, 2026
4daf8a8
remove <:Number specialization
jlchan Mar 15, 2026
46ae536
expand comment
jlchan Mar 15, 2026
d49a68a
Apply suggestions from code review
jlchan Mar 15, 2026
2914484
Merge remote-tracking branch 'jlchan/jc/sbp_shock_capturing' into jc/…
jlchan Mar 15, 2026
c7b6aa5
Merge branch 'main' into jc/sbp_shock_capturing
jlchan Mar 15, 2026
8071be9
Merge branch 'main' into jc/sbp_shock_capturing
jlchan Mar 15, 2026
7eb4e1f
Update src/solvers/dgmulti/flux_differencing.jl
jlchan Mar 15, 2026
51c8d89
fix stale comments
jlchan Mar 15, 2026
52416a3
Merge branch 'main' into jc/sbp_shock_capturing
DanielDoehring Mar 21, 2026
06ad2e2
Merge remote-tracking branch 'jlchan/jc/sbp_shock_capturing' into jc/…
jlchan Mar 22, 2026
ead129a
Merge branch 'main' into jc/sbp_shock_capturing
DanielDoehring Mar 23, 2026
b52c830
Apply suggestions from code review
jlchan Mar 23, 2026
bb90aef
fix 0.5f0 factor comments
jlchan Mar 23, 2026
031c55a
add type specialization to `adjoint_sparse_data`
jlchan Mar 23, 2026
8239180
load Adjoint from LinearAlgebra
jlchan Mar 23, 2026
073dfef
importing SparseMatrixCSC as well
jlchan Mar 23, 2026
60a1f4c
format
jlchan Mar 23, 2026
86d8488
clarify comment
jlchan Mar 23, 2026
6743b93
Apply suggestions from code review
DanielDoehring Mar 23, 2026
feb42c6
Merge branch 'main' into jc/sbp_shock_capturing
DanielDoehring Mar 23, 2026
9c8a1dd
fix type specialization for adjoint_sparse_data
jlchan Mar 23, 2026
4cf172f
Merge remote-tracking branch 'jlchan/jc/sbp_shock_capturing' into jc/…
jlchan Mar 23, 2026
1686bea
fix adjoint_sparse_data dispatch, expand comment
jlchan Mar 23, 2026
3954594
rename adjoint_sparse_data for consistency
jlchan Mar 23, 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
5 changes: 3 additions & 2 deletions src/Trixi.jl
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ const _PREFERENCE_LOOPVECTORIZATION = @load_preference("loop_vectorization", tru
# (standard library packages first, other packages next, all of them sorted alphabetically)

using Accessors: @reset
using LinearAlgebra: LinearAlgebra, Diagonal, diag, dot, eigvals, mul!, norm, cross,
using LinearAlgebra: LinearAlgebra, Adjoint, Diagonal, diag, dot, eigvals, mul!, norm,
cross,
normalize, I,
UniformScaling, det
using Printf: @printf, @sprintf, println
using SparseArrays: AbstractSparseMatrix, AbstractSparseMatrixCSC, sparse, droptol!,
using SparseArrays: SparseMatrixCSC, AbstractSparseMatrix, sparse, droptol!,
rowvals, nzrange, nonzeros

# import @reexport now to make it available for further imports/exports
Expand Down
22 changes: 19 additions & 3 deletions src/solvers/dgmulti/dg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,22 @@ end

@inline nelements(dg::DGMulti, cache) = size(cache.solution_container.u_values)[end]

# Returns the components needed to iterate efficiently over the entries of either a
# `SparseMatrixCSC` or `Adjoint{SparseMatrixCSC}`, for example when performing flux
# differencing calculations.
#
# For `Adjoint{SparseMatrixCSC}` (used by `DGMultiFluxDiff`), since `parent(A)` is a
# `SparseMatrixCSC` stored in column-major order, iterating over its columns gives
# row-major access to `A`.
#
# For `SparseMatrixCSC` (used by `DGMultiPeriodicFDSBP`, for example), `parent(A)`
# simply returns `A`.
@inline function sparse_operator_data(A::Union{<:SparseMatrixCSC,
<:Adjoint{<:Any, <:SparseMatrixCSC}})
A_base = parent(A)
return A_base, axes(A, 2), rowvals(A_base), nonzeros(A_base)
end

"""
eachdim(mesh)

Expand Down Expand Up @@ -370,7 +386,7 @@ function prolong2interfaces!(cache, u,
end

# CARE: This function requires that interpolation to quadrature points is performed before
# to populate cache.u_values, see `calc_volume_integral!` for `VolumeIntegralWeakForm`.
# to populate cache.solution_container.u_values, see `calc_volume_integral!` for `VolumeIntegralWeakForm`.
# version for affine meshes
@inline function volume_integral_kernel!(du, u, element, mesh::DGMultiMesh,
have_nonconservative_terms::False, equations,
Expand Down Expand Up @@ -398,7 +414,7 @@ end
end

# CARE: This function requires that interpolation to quadrature points is performed before
# to populate cache.u_values, see `calc_volume_integral!` for `VolumeIntegralWeakForm`.
# to populate cache.solution_container.u_values, see `calc_volume_integral!` for `VolumeIntegralWeakForm`.
# version for curved meshes
@inline function volume_integral_kernel!(du, u, element,
mesh::DGMultiMesh{NDIMS, <:NonAffine},
Expand Down Expand Up @@ -517,7 +533,7 @@ function calc_interface_flux!(cache, surface_integral::SurfaceIntegralWeakForm,
return nothing
end

# assumes cache.flux_face_values is computed and filled with
# assumes cache.solution_container.flux_face_values is computed and filled with
# for polynomial discretizations, use dense LIFT matrix for surface contributions.
function calc_surface_integral!(du, u, mesh::DGMultiMesh, equations,
surface_integral::SurfaceIntegralWeakForm,
Expand Down
Loading
Loading