Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/tree_3d_dgsem/elixir_hypdiff_nonperiodic.jl
2055 views
1
using Trixi
2
3
###############################################################################
4
# semidiscretization of the hyperbolic diffusion equations
5
6
equations = HyperbolicDiffusionEquations3D()
7
8
initial_condition = initial_condition_poisson_nonperiodic
9
boundary_conditions = (x_neg = boundary_condition_poisson_nonperiodic,
10
x_pos = boundary_condition_poisson_nonperiodic,
11
y_neg = boundary_condition_periodic,
12
y_pos = boundary_condition_periodic,
13
z_neg = boundary_condition_periodic,
14
z_pos = boundary_condition_periodic)
15
16
solver = DGSEM(polydeg = 4, surface_flux = flux_lax_friedrichs)
17
18
coordinates_min = (0.0, 0.0, 0.0)
19
coordinates_max = (1.0, 1.0, 1.0)
20
mesh = TreeMesh(coordinates_min, coordinates_max,
21
initial_refinement_level = 2,
22
n_cells_max = 30_000,
23
periodicity = (false, true, true))
24
25
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,
26
source_terms = source_terms_poisson_nonperiodic,
27
boundary_conditions = boundary_conditions)
28
29
###############################################################################
30
# ODE solvers, callbacks etc.
31
32
tspan = (0.0, 5.0)
33
ode = semidiscretize(semi, tspan)
34
35
summary_callback = SummaryCallback()
36
37
resid_tol = 1.0e-5
38
steady_state_callback = SteadyStateCallback(abstol = resid_tol, reltol = 0.0)
39
40
analysis_interval = 200
41
analysis_callback = AnalysisCallback(semi, interval = analysis_interval,
42
extra_analysis_integrals = (entropy, energy_total))
43
44
alive_callback = AliveCallback(analysis_interval = analysis_interval)
45
46
save_solution = SaveSolutionCallback(interval = 100,
47
save_initial_solution = true,
48
save_final_solution = true,
49
solution_variables = cons2prim)
50
51
stepsize_callback = StepsizeCallback(cfl = 1.8)
52
53
callbacks = CallbackSet(summary_callback, steady_state_callback,
54
analysis_callback, alive_callback,
55
save_solution,
56
stepsize_callback)
57
58
###############################################################################
59
# run the simulation
60
61
sol = Trixi.solve(ode, Trixi.HypDiffN3Erk3Sstar52();
62
dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback
63
ode_default_options()..., callback = callbacks);
64
65