Path: blob/main/examples/tree_3d_dgsem/elixir_hypdiff_nonperiodic.jl
5586 views
using Trixi12###############################################################################3# semidiscretization of the hyperbolic diffusion equations45equations = HyperbolicDiffusionEquations3D()67initial_condition = initial_condition_poisson_nonperiodic89solver = DGSEM(polydeg = 4, surface_flux = flux_lax_friedrichs)1011coordinates_min = (0.0, 0.0, 0.0)12coordinates_max = (1.0, 1.0, 1.0)13mesh = TreeMesh(coordinates_min, coordinates_max,14initial_refinement_level = 2,15n_cells_max = 30_000,16periodicity = (false, true, true))1718boundary_conditions = (; x_neg = boundary_condition_poisson_nonperiodic,19x_pos = boundary_condition_poisson_nonperiodic,20y_neg = boundary_condition_periodic,21y_pos = boundary_condition_periodic,22z_neg = boundary_condition_periodic,23z_pos = boundary_condition_periodic)2425semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,26source_terms = source_terms_poisson_nonperiodic,27boundary_conditions = boundary_conditions)2829###############################################################################30# ODE solvers, callbacks etc.3132tspan = (0.0, 5.0)33ode = semidiscretize(semi, tspan)3435summary_callback = SummaryCallback()3637resid_tol = 1.0e-538steady_state_callback = SteadyStateCallback(abstol = resid_tol, reltol = 0.0)3940analysis_interval = 20041analysis_callback = AnalysisCallback(semi, interval = analysis_interval,42extra_analysis_integrals = (entropy, energy_total))4344alive_callback = AliveCallback(analysis_interval = analysis_interval)4546save_solution = SaveSolutionCallback(interval = 100,47save_initial_solution = true,48save_final_solution = true,49solution_variables = cons2prim)5051stepsize_callback = StepsizeCallback(cfl = 1.8)5253callbacks = CallbackSet(summary_callback, steady_state_callback,54analysis_callback, alive_callback,55save_solution,56stepsize_callback)5758###############################################################################59# run the simulation6061sol = Trixi.solve(ode, Trixi.HypDiffN3Erk3Sstar52();62dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback63ode_default_options()..., callback = callbacks);646566