SciML / DifferentialEquations.jl

Multi-language suite for high-performance solvers of differential equations and scientific machine learning (SciML) components. Ordinary differential equations (ODEs), stochastic differential equations (SDEs), delay differential equations (DDEs), differential-algebraic equations (DAEs), and more in Julia.
https://docs.sciml.ai/DiffEqDocs/stable/
Other
2.85k stars 226 forks source link

segfault issue with second order ODE #183

Closed miguelraz closed 7 years ago

miguelraz commented 7 years ago

Runnig this


using DifferentialEquations, Plots, ParameterizedFunctions
init = [pi/4, 0,0,0]
tspan = (0., 3.0)
plotly()
g = @ode_def DoublePendulum (t,u,du) -> begin
(Θ₁, Θ₂, ω₁, ω₂) = u
dΘ₁ = ω₁
dΘ₂ = ω₂
dω₁ = -((g*(2m₁ + m₂)*sin(dΘ₁) + m₂*(g*sin(dΘ₁ - 2dΘ₂) + 2*sin(dΘ₁ - dΘ₂)*(L₂*dΘ₂^2 + L₂*dΘ₁^2*cos(dΘ₁ - dΘ₂))))) / (2*L₁*(m₁ + m₂ - m₂*cos(dΘ₁ - dΘ₂^2)))
dω₂ = (2sin(dΘ₁ - dΘ₂)*dΘ₂^2*L₁*(m₁ + m₂) + g*(m₁ + m₂)*cos(dΘ₁) + dΘ₂^2*L₂*m₂*cos(dΘ₁ - dΘ₂)) / (2*L₂*(m₁ + m₂ - m₂*cos(dΘ₁ - dΘ₂^2)))
end ω₁ => 1 g => 9.81 m₁ => 1 m₂ => 1 L₁ => 1 L₂ => 2

prob = ODEProblem(g,init,tspan)
sol = solve(prob)
plot(sol, title = "Double Pendulum with inplace approach")

spits out this


signal (11): Segmentation fault
while loading /home/mrg/Desktop/gsoc/GSoC17/dailyscratch/doublependuluminplace.jl, in expression starting on line 15
basic_diff at /home/mrg/.julia/v0.6/SymEngine/deps/usr/lib/libsymengine.so.0.3 (unknown line)
diff at /home/mrg/.julia/v0.6/SymEngine/src/calculus.jl:12
unknown function (ip: 0x7fccedf99466)
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
diff at /home/mrg/.julia/v0.6/SymEngine/src/calculus.jl:22
collect at ./array.jl:441
#ode_def_opts#1 at /home/mrg/.julia/v0.6/ParameterizedFunctions/src/ode_def_opts.jl:102
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
jl_apply at /home/centos/buildbot/slave/package_tarball64/build/src/julia.h:1424 [inlined]
jl_f__apply at /home/centos/buildbot/slave/package_tarball64/build/src/builtins.c:426
ode_def_opts at /home/mrg/.julia/v0.6/ParameterizedFunctions/src/ode_def_opts.jl:4
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
jl_apply at /home/centos/buildbot/slave/package_tarball64/build/src/julia.h:1424 [inlined]
jl_f__apply at /home/centos/buildbot/slave/package_tarball64/build/src/builtins.c:426
@ode_def at /home/mrg/.julia/v0.6/ParameterizedFunctions/src/macros.jl:11
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
fl_invoke_julia_macro at /home/centos/buildbot/slave/package_tarball64/build/src/ast.c:198
apply_cl at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:1226
_applyn at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:682
fl_map1 at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:2219
apply_cl at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:1226
do_trycatch at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:898
apply_cl at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:1806
_applyn at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:682
fl_applyn at /home/centos/buildbot/slave/package_tarball64/build/src/flisp/flisp.c:722
jl_parse_eval_all at /home/centos/buildbot/slave/package_tarball64/build/src/ast.c:856
include_string at ./loading.jl:515
include_string at /home/mrg/.julia/v0.6/CodeTools/src/eval.jl:30
unknown function (ip: 0x7fccedf050e0)
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
do_call at /home/centos/buildbot/slave/package_tarball64/build/src/interpreter.c:75
eval at /home/centos/buildbot/slave/package_tarball64/build/src/interpreter.c:242
jl_interpret_toplevel_expr at /home/centos/buildbot/slave/package_tarball64/build/src/interpreter.c:34
jl_toplevel_eval_flex at /home/centos/buildbot/slave/package_tarball64/build/src/toplevel.c:577
jl_toplevel_eval_in at /home/centos/buildbot/slave/package_tarball64/build/src/builtins.c:496
include_string at /home/mrg/.julia/v0.6/CodeTools/src/eval.jl:34
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
#49 at /home/mrg/.julia/v0.6/Atom/src/eval.jl:50
withpath at /home/mrg/.julia/v0.6/CodeTools/src/utils.jl:30
unknown function (ip: 0x7fccedf04c66)
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
withpath at /home/mrg/.julia/v0.6/Atom/src/eval.jl:38
unknown function (ip: 0x7fccedf04926)
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
macro expansion at /home/mrg/.julia/v0.6/Atom/src/eval.jl:49 [inlined]
#48 at ./task.jl:80
jl_call_fptr_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:339 [inlined]
jl_call_method_internal at /home/centos/buildbot/slave/package_tarball64/build/src/julia_internal.h:358 [inlined]
jl_apply_generic at /home/centos/buildbot/slave/package_tarball64/build/src/gf.c:1933
jl_apply at /home/centos/buildbot/slave/package_tarball64/build/src/julia.h:1424 [inlined]
start_task at /home/centos/buildbot/slave/package_tarball64/build/src/task.c:267
unknown function (ip: 0xffffffffffffffff)
Allocations: 18518316 (Pool: 18515986; Big: 2330); GC: 27
Julia has stopped: null, SIGSEGV
ChrisRackauckas commented 7 years ago

Why do you have

prob = ODEProblem(g,init,tspan)
sol = solve(prob)
plot(sol, title = "Double Pendulum with inplace approach")

? Isn't this segfaulting earlier and the rest is unnecessary?

This code doesn't match the proper syntax though. @ode_def has a constrained syntax which this example doesn't follow. I would expect this to segfault. Please see the ParameterizedFunctions.jl docs or use a regular function.