Path: blob/main/examples/tree_1d_dgsem/elixir_hypdiff_harmonic_nonperiodic.jl
2055 views
using Trixi12###############################################################################3# semidiscretization of the hyperbolic diffusion equations45equations = HyperbolicDiffusionEquations1D(nu = 1.25)67"""8initial_condition_poisson_nonperiodic(x, t, equations::HyperbolicDiffusionEquations1D)910A non-priodic harmonic function used in combination with11[`source_terms_poisson_nonperiodic`](@ref) and [`boundary_condition_poisson_nonperiodic`](@ref).1213!!! note14The only harmonic functions in 1D have the form phi(x) = A + Bx15"""16function initial_condition_harmonic_nonperiodic(x, t,17equations::HyperbolicDiffusionEquations1D)18# elliptic equation: -νΔϕ = f19RealT = eltype(x)20if t == 021phi = convert(RealT, 5)22q1 = zero(RealT)23else24A = 325B = exp(one(RealT))26phi = A + B * x[1]27q1 = B28end29return SVector(phi, q1)30end31initial_condition = initial_condition_harmonic_nonperiodic3233boundary_conditions = BoundaryConditionDirichlet(initial_condition)3435solver = DGSEM(polydeg = 3, surface_flux = flux_lax_friedrichs)3637coordinates_min = -1.038coordinates_max = 2.039mesh = TreeMesh(coordinates_min, coordinates_max,40initial_refinement_level = 2,41n_cells_max = 30_000,42periodicity = false)4344semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,45boundary_conditions = boundary_conditions,46source_terms = source_terms_harmonic)4748###############################################################################49# ODE solvers, callbacks etc.5051tspan = (0.0, 30.0)52ode = semidiscretize(semi, tspan)5354summary_callback = SummaryCallback()5556resid_tol = 5.0e-1257steady_state_callback = SteadyStateCallback(abstol = resid_tol, reltol = 0.0)5859analysis_interval = 10060analysis_callback = AnalysisCallback(semi, interval = analysis_interval)6162alive_callback = AliveCallback(analysis_interval = analysis_interval)6364save_solution = SaveSolutionCallback(interval = 100,65save_initial_solution = true,66save_final_solution = true,67solution_variables = cons2prim)6869stepsize_callback = StepsizeCallback(cfl = 1.75)7071callbacks = CallbackSet(summary_callback, steady_state_callback,72analysis_callback, alive_callback,73save_solution,74stepsize_callback)7576###############################################################################77# run the simulation7879sol = Trixi.solve(ode, Trixi.HypDiffN3Erk3Sstar52();80dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback81ode_default_options()..., callback = callbacks);828384