@muladd begin
function create_cache(mesh::P4estMesh, equations::AbstractEquations, dg::DG, ::Any,
::Type{uEltype}) where {uEltype <: Real}
balance!(mesh)
elements = init_elements(mesh, equations, dg.basis, uEltype)
interfaces = init_interfaces(mesh, equations, dg.basis, elements)
boundaries = init_boundaries(mesh, equations, dg.basis, elements)
mortars = init_mortars(mesh, equations, dg.basis, elements)
cache = (; elements, interfaces, boundaries, mortars)
cache = (; cache...,
create_cache(mesh, equations, dg.volume_integral, dg, cache, uEltype)...)
cache = (; cache..., create_cache(mesh, equations, dg.mortar, uEltype)...)
return cache
end
function create_cache(mesh::P4estMeshView, equations::AbstractEquations, dg::DG, ::Any,
::Type{uEltype}) where {uEltype <: Real}
balance!(mesh.parent)
elements_parent = init_elements(mesh.parent, equations, dg.basis, uEltype)
interfaces_parent = init_interfaces(mesh.parent, equations, dg.basis,
elements_parent)
boundaries_parent = init_boundaries(mesh.parent, equations, dg.basis,
elements_parent)
mortars_parent = init_mortars(mesh.parent, equations, dg.basis, elements_parent)
elements, interfaces, boundaries, mortars, neighbor_ids_parent = extract_p4est_mesh_view(elements_parent,
interfaces_parent,
boundaries_parent,
mortars_parent,
mesh,
equations,
dg,
uEltype)
cache = (; elements, interfaces, boundaries, mortars, neighbor_ids_parent)
cache = (; cache...,
create_cache(mesh, equations, dg.volume_integral, dg, uEltype)...)
cache = (; cache..., create_cache(mesh, equations, dg.mortar, uEltype)...)
return cache
end
@inline function get_normal_direction(direction, contravariant_vectors, indices...)
orientation = (direction + 1) >> 1
normal = get_contravariant_vector(orientation, contravariant_vectors, indices...)
if isodd(direction)
return -normal
else
return normal
end
end
include("containers.jl")
include("dg_2d.jl")
include("dg_2d_parabolic.jl")
include("dg_3d.jl")
include("dg_3d_parabolic.jl")
include("dg_parallel.jl")
include("subcell_limiters.jl")
include("subcell_limiters_2d.jl")
include("subcell_limiters_3d.jl")
include("dg_3d_subcell_limiters.jl")
end