Skip to content

Commit 49d0662

Browse files
Apply suggestions from code review
Co-authored-by: Hendrik Ranocha <[email protected]>
1 parent 7747d55 commit 49d0662

File tree

3 files changed

+22
-20
lines changed

3 files changed

+22
-20
lines changed

examples/tree_1d_dgsem/elixir_advection_diffusion_implicit_sparse_jacobian.jl

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jac_prototype_parabolic = jacobian_sparsity(rhs_parabolic_wrapped!, du_ode, u0_o
7575
# For most efficient solving we also want the coloring vector
7676

7777
# We choose `nonsymmetric` `structure` because we're computing a Jacobian, which
78-
# is for the Upwind-alike discretization of the advection term nonsymmmetric
78+
# is for the upwind-alike discretization of the advection term nonsymmmetric
7979
# We arbitrarily choose a column-based `partitioning`. This means that we will color
8080
# structurally orthogonal columns the same. `row` partitioning would be equally valid here
8181
coloring_prob = ColoringProblem(; structure = :nonsymmetric, partition = :column)
@@ -89,24 +89,24 @@ coloring_vec_parabolic = column_colors(coloring_result)
8989
### sparsity-aware semidiscretization and ODE ###
9090

9191
# Semidiscretization for actual simulation. `uEltype` is here retrieved from `solver`
92-
semi_float_type = SemidiscretizationHyperbolicParabolic(mesh,
93-
(equations_hyperbolic,
94-
equations_parabolic),
95-
initial_condition, solver)
92+
semi= = SemidiscretizationHyperbolicParabolic(mesh,
93+
(equations_hyperbolic,
94+
equations_parabolic),
95+
initial_condition, solver)
9696

9797
# Supply Jacobian prototype and coloring vector to the semidiscretization
98-
ode_jac_sparse = semidiscretize(semi_float_type, tspan,
99-
jac_prototype_parabolic = jac_prototype_parabolic,
100-
colorvec_parabolic = coloring_vec_parabolic)
101-
# using "dense" `ode = semidiscretize(semi_float_type, tspan)` is 4-6 times slower!
98+
ode = semidiscretize(semi, tspan,
99+
jac_prototype_parabolic = jac_prototype_parabolic,
100+
colorvec_parabolic = coloring_vec_parabolic)
101+
# using "dense" `ode = semidiscretize(semi, tspan)` is 4-6 times slower!
102102

103103
###############################################################################
104104
### callbacks ###
105105

106106
summary_callback = SummaryCallback()
107107

108108
analysis_interval = 100
109-
analysis_callback = AnalysisCallback(semi_float_type, interval = analysis_interval)
109+
analysis_callback = AnalysisCallback(semi, interval = analysis_interval)
110110

111111
alive_callback = AliveCallback(analysis_interval = analysis_interval)
112112

@@ -119,7 +119,8 @@ callbacks = CallbackSet(summary_callback, analysis_callback, alive_callback, sav
119119
###############################################################################
120120
### solve the ODE problem ###
121121

122-
sol = solve(ode_jac_sparse, SBDF2(; autodiff = AutoFiniteDiff());
123-
dt = 0.01, save_everystep = false,
122+
sol = solve(ode, SBDF2(; autodiff = AutoFiniteDiff());
123+
ode_default_options()...,
124+
dt = 0.01,
124125
abstol = 1e-9, reltol = 1e-9,
125-
ode_default_options()..., callback = callbacks)
126+
callback = callbacks)

examples/tree_1d_dgsem/elixir_advection_diffusion_implicit_sparse_jacobian_restart.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@ restart_filename = joinpath("out", restart_file)
1414
tspan = (load_time(restart_filename), 2.0)
1515
dt_restart = load_dt(restart_filename)
1616

17-
ode_jac_sparse = semidiscretize(semi_float_type, tspan,
18-
restart_filename,
19-
jac_prototype_parabolic = jac_prototype_parabolic,
20-
colorvec_parabolic = coloring_vec_parabolic)
17+
ode = semidiscretize(semi, tspan,
18+
restart_filename,
19+
jac_prototype_parabolic = jac_prototype_parabolic,
20+
colorvec_parabolic = coloring_vec_parabolic)
2121

2222
###############################################################################
2323
# run the simulation
2424

2525
sol = solve(ode_jac_sparse,
2626
SBDF2(; autodiff = AutoFiniteDiff());
27-
dt = dt_restart, save_everystep = false,
27+
ode_default_options()...,
28+
dt = dt_restart,
2829
abstol = 1e-9, reltol = 1e-9,
2930
callback = callbacks);

src/semidiscretization/semidiscretization_hyperbolic_parabolic.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,8 @@ SciML ecosystem.
277277
Optional keyword arguments:
278278
- `jac_prototype_parabolic`: Expected to come from [SparseConnectivityTracer.jl](https://github.com/adrhill/SparseConnectivityTracer.jl).
279279
Specifies the sparsity structure of the parabolic function's Jacobian to enable e.g. efficient implicit time stepping.
280-
The [SplitODEProblem](https://docs.sciml.ai/DiffEqDocs/stable/types/split_ode_types/#SciMLBase.SplitODEProblem) only expects the Jacobian
281-
to be defined on the first function it takes in, which is treated implicitly. This corresponds to the parabolic right-hand side in Trixi.
280+
The [`SplitODEProblem`](https://docs.sciml.ai/DiffEqDocs/stable/types/split_ode_types/#SciMLBase.SplitODEProblem) only expects the Jacobian
281+
to be defined on the first function it takes in, which is treated implicitly. This corresponds to the parabolic right-hand side in Trixi.jl.
282282
The hyperbolic right-hand side is expected to be treated explicitly, and therefore its Jacobian is irrelevant.
283283
- `colorvec_parabolic`: Expected to come from [SparseMatrixColorings.jl](https://github.com/gdalle/SparseMatrixColorings.jl).
284284
Allows for even faster Jacobian computation. Not necessarily required when `jac_prototype_parabolic` is given.

0 commit comments

Comments
 (0)