Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/examples/dgmulti_2d/elixir_euler_triangulate_pkg_mesh.jl
2055 views
1
using OrdinaryDiffEqLowStorageRK
2
using Trixi
3
4
dg = DGMulti(polydeg = 3, element_type = Tri(),
5
surface_integral = SurfaceIntegralWeakForm(flux_hll),
6
volume_integral = VolumeIntegralWeakForm())
7
8
equations = CompressibleEulerEquations2D(1.4)
9
initial_condition = initial_condition_convergence_test
10
source_terms = source_terms_convergence_test
11
12
# use pre-defined Triangulate geometry in StartUpDG
13
meshIO = StartUpDG.triangulate_domain(StartUpDG.RectangularDomainWithHole())
14
15
# the pre-defined Triangulate geometry in StartUpDG has integer boundary tags. this routine
16
# assigns boundary faces based on these integer boundary tags.
17
mesh = DGMultiMesh(dg, meshIO, Dict(:outer_boundary => 1, :inner_boundary => 2))
18
19
boundary_condition_convergence_test = BoundaryConditionDirichlet(initial_condition)
20
boundary_conditions = (; :outer_boundary => boundary_condition_convergence_test,
21
:inner_boundary => boundary_condition_convergence_test)
22
23
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, dg,
24
source_terms = source_terms,
25
boundary_conditions = boundary_conditions)
26
27
tspan = (0.0, 0.2)
28
ode = semidiscretize(semi, tspan)
29
30
summary_callback = SummaryCallback()
31
alive_callback = AliveCallback(alive_interval = 10)
32
analysis_interval = 100
33
analysis_callback = AnalysisCallback(semi, interval = analysis_interval, uEltype = real(dg))
34
save_solution = SaveSolutionCallback(interval = analysis_interval,
35
solution_variables = cons2prim)
36
callbacks = CallbackSet(summary_callback, alive_callback, analysis_callback, save_solution)
37
38
###############################################################################
39
# run the simulation
40
41
sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false);
42
dt = 0.5 * estimate_dt(mesh, dg),
43
ode_default_options()...,
44
callback = callbacks);
45
46