Skip to content

Commit 88fcef5

Browse files
fix jacobian_fd if state is (almost) zero (#2514)
1 parent 3ce2033 commit 88fcef5

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/semidiscretization/semidiscretization.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ function semidiscretize(semi::AbstractSemidiscretization, tspan;
121121
end
122122

123123
"""
124-
semidiscretize(semi::AbstractSemidiscretization, tspan,
124+
semidiscretize(semi::AbstractSemidiscretization, tspan,
125125
restart_file::AbstractString)
126126
127127
Wrap the semidiscretization `semi` as an ODE problem in the time interval `tspan`
@@ -240,7 +240,7 @@ function jacobian_fd(semi::AbstractSemidiscretization;
240240
# use second order finite difference to estimate Jacobian matrix
241241
for idx in eachindex(u0_ode)
242242
# determine size of fluctuation
243-
epsilon = sqrt(eps(u0_ode[idx]))
243+
epsilon = sqrt(eps(typeof(u0_ode[idx])))
244244

245245
# plus fluctuation
246246
u_ode[idx] = u0_ode[idx] + epsilon
@@ -250,7 +250,7 @@ function jacobian_fd(semi::AbstractSemidiscretization;
250250
u_ode[idx] = u0_ode[idx] - epsilon
251251
rhs!(dum_ode, u_ode, semi, t0)
252252

253-
# restore linearisation state
253+
# restore linearization state
254254
u_ode[idx] = u0_ode[idx]
255255

256256
# central second order finite difference
@@ -288,7 +288,7 @@ end
288288
function _jacobian_ad_forward(semi, t0, u0_ode, du_ode, config)
289289
new_semi = remake(semi, uEltype = eltype(config))
290290
# Create anonymous function passed as first argument to `ForwardDiff.jacobian` to match
291-
# `ForwardDiff.jacobian(f!, y::AbstractArray, x::AbstractArray,
291+
# `ForwardDiff.jacobian(f!, y::AbstractArray, x::AbstractArray,
292292
# cfg::JacobianConfig = JacobianConfig(f!, y, x), check=Val{true}())`
293293
J = ForwardDiff.jacobian(du_ode, u0_ode, config) do du_ode, u_ode
294294
Trixi.rhs!(du_ode, u_ode, new_semi, t0)
@@ -322,7 +322,7 @@ end
322322
function _jacobian_ad_forward_structarrays(semi, t0, u0_ode_plain, du_ode_plain, config)
323323
new_semi = remake(semi, uEltype = eltype(config))
324324
# Create anonymous function passed as first argument to `ForwardDiff.jacobian` to match
325-
# `ForwardDiff.jacobian(f!, y::AbstractArray, x::AbstractArray,
325+
# `ForwardDiff.jacobian(f!, y::AbstractArray, x::AbstractArray,
326326
# cfg::JacobianConfig = JacobianConfig(f!, y, x), check=Val{true}())`
327327
J = ForwardDiff.jacobian(du_ode_plain, u0_ode_plain,
328328
config) do du_ode_plain, u_ode_plain

0 commit comments

Comments
 (0)