The split_form_kernel! found in solvers/dgsem_structured/dg_2d.jl uses the matrix derivative_split from dg.basis which is zero along the main diagonal. In essence, this "peels off" the two volume contributions at the [1,1] and [polydeg+1, polydeg+1] positions that would be present if one were to use derivative_matrix from dg.basis and moves them to behave more like boundary terms.
Currently for the nonconservative terms, the boundary flux must account for a contribution that depends only on interior values (which are in reality coming from the volume part) as well as part that couples the left and right states. See calc_boundary_flux! in solvers/dgsem_unstructured/dg_2d.jl for more information.
The
split_form_kernel!found insolvers/dgsem_structured/dg_2d.jluses the matrixderivative_splitfromdg.basiswhich is zero along the main diagonal. In essence, this "peels off" the two volume contributions at the[1,1]and[polydeg+1, polydeg+1]positions that would be present if one were to usederivative_matrixfromdg.basisand moves them to behave more like boundary terms.Currently for the nonconservative terms, the boundary flux must account for a contribution that depends only on interior values (which are in reality coming from the volume part) as well as part that couples the left and right states. See
calc_boundary_flux!insolvers/dgsem_unstructured/dg_2d.jlfor more information.