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