Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/src/equations/laplace_diffusion_2d.jl
5586 views
1
@doc raw"""
2
LaplaceDiffusion2D(diffusivity, equations)
3
4
`LaplaceDiffusion2D` represents a scalar diffusion term ``\nabla \cdot (\kappa\nabla u))``
5
with diffusivity ``\kappa`` applied to each solution component defined by `equations`.
6
This is intended for use as the parabolic part of a hyperbolic-parabolic system, where the
7
hyperbolic part is defined by `equations`. For a purely parabolic diffusion equation
8
without any hyperbolic part, see [`LinearDiffusionEquation2D`](@ref).
9
"""
10
struct LaplaceDiffusion2D{E, N, T} <: AbstractLaplaceDiffusion{2, N}
11
diffusivity::T
12
equations_hyperbolic::E
13
end
14
15
function LaplaceDiffusion2D(diffusivity, equations_hyperbolic)
16
return LaplaceDiffusion2D{typeof(equations_hyperbolic),
17
nvariables(equations_hyperbolic),
18
typeof(diffusivity)}(diffusivity, equations_hyperbolic)
19
end
20
21
function varnames(variable_mapping, equations_parabolic::LaplaceDiffusion2D)
22
return varnames(variable_mapping, equations_parabolic.equations_hyperbolic)
23
end
24
25
function flux(u, gradients, orientation::Integer, equations_parabolic::LaplaceDiffusion2D)
26
dudx, dudy = gradients
27
if orientation == 1
28
return SVector(equations_parabolic.diffusivity * dudx)
29
else # if orientation == 2
30
return SVector(equations_parabolic.diffusivity * dudy)
31
end
32
end
33
34
# TODO: parabolic; should this remain in the equations file, be moved to solvers, or live in the elixir?
35
# The penalization depends on the solver, but also depends explicitly on physical parameters,
36
# and would probably need to be specialized for every different equation.
37
function penalty(u_outer, u_inner, inv_h, equations_parabolic::LaplaceDiffusion2D,
38
dg::ParabolicFormulationLocalDG)
39
return dg.penalty_parameter * (u_outer - u_inner) * equations_parabolic.diffusivity
40
end
41
42
# General Dirichlet and Neumann boundary condition functions are defined in `src/equations/laplace_diffusion_1d.jl`.
43
44