-
Notifications
You must be signed in to change notification settings - Fork 114
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
26 changed files
with
515 additions
and
271 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
name = "Trixi" | ||
uuid = "a7f1ee26-1774-49b1-8366-f1abc58fbfcb" | ||
authors = ["Michael Schlottke-Lakemper <[email protected]>", "Gregor Gassner <[email protected]>", "Hendrik Ranocha <[email protected]>", "Andrew R. Winters <[email protected]>", "Jesse Chan <[email protected]>"] | ||
version = "0.6.9-pre" | ||
version = "0.6.10-pre" | ||
|
||
[deps] | ||
CodeTracking = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" | ||
|
@@ -46,6 +46,7 @@ TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" | |
Triangulate = "f7e6ffb2-c36d-4f8f-a77e-16e897189344" | ||
TriplotBase = "981d1d27-644d-49a2-9326-4793e63143c3" | ||
TriplotRecipes = "808ab39a-a642-4abf-81ff-4cb34ebbffa3" | ||
TrixiBase = "9a0f1c46-06d5-4909-a5a3-ce25d3fa3284" | ||
UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" | ||
|
||
[weakdeps] | ||
|
@@ -98,6 +99,7 @@ TimerOutputs = "0.5.7" | |
Triangulate = "2.0" | ||
TriplotBase = "0.1" | ||
TriplotRecipes = "0.1" | ||
TrixiBase = "0.1.1" | ||
UUIDs = "1.6" | ||
julia = "1.8" | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# TrixiBase.jl API | ||
|
||
```@meta | ||
CurrentModule = TrixiBase | ||
``` | ||
|
||
```@autodocs | ||
Modules = [TrixiBase] | ||
``` |
80 changes: 80 additions & 0 deletions
80
examples/structured_1d_dgsem/elixir_traffic_flow_lwr_greenlight.jl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
|
||
using OrdinaryDiffEq | ||
using Trixi | ||
|
||
############################################################################### | ||
|
||
equations = TrafficFlowLWREquations1D() | ||
|
||
solver = DGSEM(polydeg = 3, surface_flux = FluxHLL(min_max_speed_davis)) | ||
|
||
coordinates_min = (-1.0,) # minimum coordinate | ||
coordinates_max = (1.0,) # maximum coordinate | ||
cells_per_dimension = (64,) | ||
|
||
mesh = StructuredMesh(cells_per_dimension, coordinates_min, coordinates_max, | ||
periodicity = false) | ||
|
||
# Example inspired from http://www.clawpack.org/riemann_book/html/Traffic_flow.html#Example:-green-light | ||
# Green light that at x = 0 which switches at t = 0 from red to green. | ||
# To the left there are cars bumper to bumper, to the right there are no cars. | ||
function initial_condition_greenlight(x, t, equation::TrafficFlowLWREquations1D) | ||
scalar = x[1] < 0.0 ? 1.0 : 0.0 | ||
|
||
return SVector(scalar) | ||
end | ||
|
||
############################################################################### | ||
# Specify non-periodic boundary conditions | ||
|
||
# Assume that there are always cars waiting at the left | ||
function inflow(x, t, equations::TrafficFlowLWREquations1D) | ||
return initial_condition_greenlight(coordinates_min, t, equations) | ||
end | ||
boundary_condition_inflow = BoundaryConditionDirichlet(inflow) | ||
|
||
# Cars may leave the modeled domain | ||
function boundary_condition_outflow(u_inner, orientation, normal_direction, x, t, | ||
surface_flux_function, | ||
equations::TrafficFlowLWREquations1D) | ||
# Calculate the boundary flux entirely from the internal solution state | ||
flux = Trixi.flux(u_inner, orientation, equations) | ||
|
||
return flux | ||
end | ||
|
||
boundary_conditions = (x_neg = boundary_condition_inflow, | ||
x_pos = boundary_condition_outflow) | ||
|
||
initial_condition = initial_condition_greenlight | ||
|
||
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver, | ||
boundary_conditions = boundary_conditions) | ||
|
||
############################################################################### | ||
# ODE solvers, callbacks etc. | ||
|
||
tspan = (0.0, 0.5) | ||
ode = semidiscretize(semi, tspan) | ||
|
||
summary_callback = SummaryCallback() | ||
|
||
analysis_interval = 100 | ||
analysis_callback = AnalysisCallback(semi, interval = analysis_interval) | ||
|
||
alive_callback = AliveCallback(analysis_interval = analysis_interval) | ||
|
||
stepsize_callback = StepsizeCallback(cfl = 1.2) | ||
|
||
callbacks = CallbackSet(summary_callback, | ||
analysis_callback, alive_callback, | ||
stepsize_callback) | ||
|
||
############################################################################### | ||
# run the simulation | ||
|
||
sol = solve(ode, CarpenterKennedy2N54(williamson_condition = false), | ||
dt = 42, # solve needs some value here but it will be overwritten by the stepsize_callback | ||
save_everystep = false, callback = callbacks); | ||
|
||
summary_callback() # print the timer summary |
54 changes: 54 additions & 0 deletions
54
examples/tree_1d_dgsem/elixir_traffic_flow_lwr_convergence.jl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
|
||
using OrdinaryDiffEq | ||
using Trixi | ||
|
||
############################################################################### | ||
|
||
equations = TrafficFlowLWREquations1D() | ||
|
||
# Use first order finite volume to prevent oscillations at the shock | ||
solver = DGSEM(polydeg = 3, surface_flux = flux_hll) | ||
|
||
coordinates_min = 0.0 # minimum coordinate | ||
coordinates_max = 2.0 # maximum coordinate | ||
|
||
# Create a uniformly refined mesh with periodic boundaries | ||
mesh = TreeMesh(coordinates_min, coordinates_max, | ||
initial_refinement_level = 4, | ||
n_cells_max = 30_000) | ||
|
||
############################################################################### | ||
# Specify non-periodic boundary conditions | ||
|
||
initial_condition = initial_condition_convergence_test | ||
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver, | ||
source_terms = source_terms_convergence_test) | ||
|
||
############################################################################### | ||
# ODE solvers, callbacks etc. | ||
|
||
tspan = (0.0, 2.0) | ||
ode = semidiscretize(semi, tspan) | ||
|
||
summary_callback = SummaryCallback() | ||
|
||
analysis_interval = 100 | ||
analysis_callback = AnalysisCallback(semi, interval = analysis_interval) | ||
|
||
alive_callback = AliveCallback(analysis_interval = analysis_interval) | ||
|
||
stepsize_callback = StepsizeCallback(cfl = 1.6) | ||
|
||
callbacks = CallbackSet(summary_callback, | ||
analysis_callback, | ||
alive_callback, | ||
stepsize_callback) | ||
|
||
############################################################################### | ||
# run the simulation | ||
|
||
sol = solve(ode, CarpenterKennedy2N54(), | ||
dt = 42, # solve needs some value here but it will be overwritten by the stepsize_callback | ||
save_everystep = false, callback = callbacks); | ||
|
||
summary_callback() # print the timer summary |
82 changes: 82 additions & 0 deletions
82
examples/tree_1d_dgsem/elixir_traffic_flow_lwr_trafficjam.jl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
|
||
using OrdinaryDiffEq | ||
using Trixi | ||
|
||
############################################################################### | ||
|
||
equations = TrafficFlowLWREquations1D() | ||
|
||
# Use first order finite volume to prevent oscillations at the shock | ||
solver = DGSEM(polydeg = 0, surface_flux = flux_lax_friedrichs) | ||
|
||
coordinates_min = -1.0 # minimum coordinate | ||
coordinates_max = 1.0 # maximum coordinate | ||
|
||
mesh = TreeMesh(coordinates_min, coordinates_max, | ||
initial_refinement_level = 9, | ||
n_cells_max = 30_000, | ||
periodicity = false) | ||
|
||
# Example taken from http://www.clawpack.org/riemann_book/html/Traffic_flow.html#Example:-Traffic-jam | ||
# Discontinuous initial condition (Riemann Problem) leading to a shock that moves to the left. | ||
# The shock corresponds to the traffic congestion. | ||
function initial_condition_traffic_jam(x, t, equation::TrafficFlowLWREquations1D) | ||
scalar = x[1] < 0.0 ? 0.5 : 1.0 | ||
|
||
return SVector(scalar) | ||
end | ||
|
||
############################################################################### | ||
# Specify non-periodic boundary conditions | ||
|
||
function outflow(x, t, equations::TrafficFlowLWREquations1D) | ||
return initial_condition_traffic_jam(coordinates_min, t, equations) | ||
end | ||
boundary_condition_outflow = BoundaryConditionDirichlet(outflow) | ||
|
||
function boundary_condition_inflow(u_inner, orientation, normal_direction, x, t, | ||
surface_flux_function, | ||
equations::TrafficFlowLWREquations1D) | ||
# Calculate the boundary flux entirely from the internal solution state | ||
flux = Trixi.flux(u_inner, orientation, equations) | ||
|
||
return flux | ||
end | ||
|
||
boundary_conditions = (x_neg = boundary_condition_outflow, | ||
x_pos = boundary_condition_inflow) | ||
|
||
initial_condition = initial_condition_traffic_jam | ||
|
||
semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver, | ||
boundary_conditions = boundary_conditions) | ||
|
||
############################################################################### | ||
# ODE solvers, callbacks etc. | ||
|
||
tspan = (0.0, 0.5) | ||
ode = semidiscretize(semi, tspan) | ||
|
||
summary_callback = SummaryCallback() | ||
|
||
analysis_interval = 100 | ||
analysis_callback = AnalysisCallback(semi, interval = analysis_interval) | ||
|
||
alive_callback = AliveCallback(analysis_interval = analysis_interval) | ||
|
||
stepsize_callback = StepsizeCallback(cfl = 1.0) | ||
|
||
callbacks = CallbackSet(summary_callback, | ||
analysis_callback, alive_callback, | ||
stepsize_callback) | ||
|
||
############################################################################### | ||
# run the simulation | ||
|
||
# Note: Be careful when increasing the polynomial degree and switching from first order finite volume | ||
# to some actual DG method - in that case, you should also exchange the ODE solver. | ||
sol = solve(ode, Euler(), | ||
dt = 42, # solve needs some value here but it will be overwritten by the stepsize_callback | ||
save_everystep = false, callback = callbacks); | ||
|
||
summary_callback() # print the timer summary |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.