Path: blob/main/examples/p4est_3d_dgsem/elixir_navierstokes_freestream_boundaries.jl
5586 views
using OrdinaryDiffEqStabilizedRK1using Trixi23###############################################################################4# semidiscretization of the compressible Euler equations56equations = CompressibleEulerEquations3D(1.4)78function initial_condition_const(x, t, equations)9RealT = eltype(x)10rho = 111rho_v1 = convert(RealT, 0.1)12rho_v2 = convert(RealT, -0.2)13rho_v3 = convert(RealT, 0.7)14rho_e_total = 1015return SVector(rho, rho_v1, rho_v2, rho_v3, rho_e_total)16end17initial_condition = initial_condition_const1819polydeg = 320solver = DGSEM(polydeg = polydeg, surface_flux = flux_lax_friedrichs)21solver_parabolic = ParabolicFormulationBassiRebay1()2223mu() = 0.524prandtl_number() = 0.7225equations_parabolic = CompressibleNavierStokesDiffusion3D(equations, mu = mu(),26Prandtl = prandtl_number())2728###############################################################################29# Get the uncurved mesh from a file (downloads the file if not available locally)3031default_mesh_file = joinpath(@__DIR__, "mesh_cube_with_boundaries.inp")32isfile(default_mesh_file) ||33Trixi.download("https://gist.githubusercontent.com/DanielDoehring/710eab379fe3042dc08af6f2d1076e49/raw/38e9803bc0dab9b32a61d9542feac5343c3e6f4b/mesh_cube_with_boundaries.inp",34default_mesh_file)35mesh_file = default_mesh_file3637boundary_symbols = [:PhysicalSurface1, :PhysicalSurface2]3839mesh = P4estMesh{3}(mesh_file, polydeg = polydeg, initial_refinement_level = 0,40boundary_symbols = boundary_symbols)4142boundary_conditions = (; PhysicalSurface1 = BoundaryConditionDirichlet(initial_condition),43PhysicalSurface2 = BoundaryConditionDirichlet(initial_condition))4445semi = SemidiscretizationHyperbolicParabolic(mesh, (equations, equations_parabolic),46initial_condition,47solver; solver_parabolic,48boundary_conditions = (boundary_conditions,49boundary_conditions))5051###############################################################################52# ODE solvers, callbacks etc.5354tspan = (0.0, 1.0)55ode = semidiscretize(semi, tspan)5657summary_callback = SummaryCallback()5859analysis_interval = 10060analysis_callback = AnalysisCallback(semi, interval = analysis_interval)6162alive_callback = AliveCallback(analysis_interval = analysis_interval)6364callbacks = CallbackSet(summary_callback,65analysis_callback, alive_callback)6667###############################################################################68# run the simulation6970sol = solve(ode, ROCK4(max_stages = 8); adaptive = false, dt = 1e-3,71ode_default_options()..., callback = callbacks);727374