Path: blob/main/examples/structured_2d_dgsem/elixir_hypdiff_harmonic_nonperiodic.jl
2055 views
using OrdinaryDiffEqLowStorageRK1using Trixi23###############################################################################4# semidiscretization of the hyperbolic diffusion equations56equations = HyperbolicDiffusionEquations2D()78@inline function initial_condition_harmonic_nonperiodic(x, t,9equations::HyperbolicDiffusionEquations2D)10# elliptic equation: -ν Δϕ = 0 in Ω, u = g on ∂Ω11if t == 0.012phi = 1.013q1 = 1.014q2 = 1.015else16C = inv(sinh(pi))17sinpi_x1, cospi_x1 = sincos(pi * x[1])18sinpi_x2, cospi_x2 = sincos(pi * x[2])19sinh_pix1 = sinh(pi * x[1])20cosh_pix1 = cosh(pi * x[1])21sinh_pix2 = sinh(pi * x[2])22cosh_pix2 = cosh(pi * x[2])23phi = C * (sinh_pix1 * sinpi_x2 + sinh_pix2 * sinpi_x1)24q1 = C * pi * (cosh_pix1 * sinpi_x2 + sinh_pix2 * cospi_x1)25q2 = C * pi * (sinh_pix1 * cospi_x2 + cosh_pix2 * sinpi_x1)26end27return SVector(phi, q1, q2)28end29initial_condition = initial_condition_harmonic_nonperiodic3031boundary_conditions = BoundaryConditionDirichlet(initial_condition)3233solver = DGSEM(polydeg = 4, surface_flux = flux_godunov)3435coordinates_min = (0.0, 0.0)36coordinates_max = (1.0, 1.0)37cells_per_dimension = (8, 8)38mesh = StructuredMesh(cells_per_dimension, coordinates_min, coordinates_max,39periodicity = false)4041semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,42boundary_conditions = boundary_conditions,43source_terms = source_terms_harmonic)4445###############################################################################46# ODE solvers, callbacks etc.4748tspan = (0.0, 5.0)49ode = semidiscretize(semi, tspan)5051summary_callback = SummaryCallback()5253resid_tol = 5.0e-1254steady_state_callback = SteadyStateCallback(abstol = resid_tol, reltol = 0.0)5556analysis_interval = 10057analysis_callback = AnalysisCallback(semi, interval = analysis_interval)5859alive_callback = AliveCallback(analysis_interval = analysis_interval)6061save_solution = SaveSolutionCallback(interval = 100,62save_initial_solution = true,63save_final_solution = true,64solution_variables = cons2prim)6566stepsize_callback = StepsizeCallback(cfl = 1.0)6768callbacks = CallbackSet(summary_callback, steady_state_callback,69analysis_callback, alive_callback,70save_solution,71stepsize_callback)7273###############################################################################74# run the simulation7576sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);77dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback78ode_default_options()..., callback = callbacks);798081