Path: blob/main/examples/structured_2d_dgsem/elixir_hypdiff_nonperiodic.jl
2055 views
using Trixi12###############################################################################3# semidiscretization of the hyperbolic diffusion equations45equations = HyperbolicDiffusionEquations2D()67initial_condition = initial_condition_poisson_nonperiodic89solver = DGSEM(polydeg = 6, surface_flux = flux_lax_friedrichs)1011boundary_conditions = (x_neg = boundary_condition_poisson_nonperiodic,12x_pos = boundary_condition_poisson_nonperiodic,13y_neg = boundary_condition_periodic,14y_pos = boundary_condition_periodic)1516###############################################################################17# Get the curved quad mesh from a mapping function18#19# Mapping as described in https://arxiv.org/abs/2012.12040, but reduced to 2D20function mapping(xi_, eta_)21# Transform input variables between -1 and 1 onto [0,3]22xi = 1.5 * xi_ + 1.523eta = 1.5 * eta_ + 1.52425y = eta + 3 / 8 * (cos(1.5 * pi * (2 * xi - 3) / 3) *26cos(0.5 * pi * (2 * eta - 3) / 3))2728x = xi + 3 / 8 * (cos(0.5 * pi * (2 * xi - 3) / 3) *29cos(2 * pi * (2 * y - 3) / 3))3031return SVector(x, y)32end3334# Create curved mesh with 8 x 8 elements35cells_per_dimension = (8, 8)36mesh = StructuredMesh(cells_per_dimension, mapping, periodicity = (false, true))3738semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,39source_terms = source_terms_poisson_nonperiodic,40boundary_conditions = boundary_conditions)4142###############################################################################43# ODE solvers, callbacks etc.4445tspan = (0.0, 30.0)46ode = semidiscretize(semi, tspan)4748summary_callback = SummaryCallback()4950resid_tol = 5.0e-1251steady_state_callback = SteadyStateCallback(abstol = resid_tol, reltol = 0.0)5253analysis_interval = 400054analysis_callback = AnalysisCallback(semi, interval = analysis_interval,55extra_analysis_integrals = (entropy, energy_total))5657alive_callback = AliveCallback(analysis_interval = analysis_interval)5859save_solution = SaveSolutionCallback(interval = 4000,60save_initial_solution = true,61save_final_solution = true,62solution_variables = cons2prim)6364stepsize_callback = StepsizeCallback(cfl = 1.9)6566callbacks = CallbackSet(summary_callback, steady_state_callback,67analysis_callback, alive_callback,68save_solution,69stepsize_callback)7071###############################################################################72# run the simulation7374sol = Trixi.solve(ode, Trixi.HypDiffN3Erk3Sstar52();75dt = 1.0, # solve needs some value here but it will be overwritten by the stepsize_callback76ode_default_options()..., callback = callbacks);777879