Julia 微分方程抑制检测到的不稳定性警告
Julia Differential Equations suppress warning of detected instabilities
我有一个程序可以使用 Julia 的微分方程包模拟粒子的路径。模拟允许粒子撞击设备 - 为防止继续模拟此类粒子,我使用解算器的 unstable_check
(特别是 EulerHeun
解算器)。但是,这会导致如下警告:
┌ Warning: Instability detected. Aborting
└ @ SciMLBase <path>\.julia\packages\SciMLBase[=10=]s9uL\src\integrator_interface.jl:351
当我模拟数千个粒子时,这可能会很烦人(而且很慢)。
我可以取消这个警告吗?如果没有,是否有另一种(更好的)方法来中止某些粒子的模拟?
我认为代码示例在这里没有意义/没有必要;如果您不这么认为,请告诉我。
有 Suppressor.jl
,虽然我不知道这是否会减少您从创建警告中获得的开销,所以 DiffEq 特定的设置可能是更好的方法(我不知道虽然对 DiffEq 了解不多,抱歉!)
这是自述文件中的示例:
julia> using Suppressor
julia> @suppress begin
println("This string doesn't get printed!")
@warn("This warning is ignored.")
end
只是为了抑制你想要的警告 @suppress_err
https://diffeq.sciml.ai/stable/basics/common_solver_opts/#Miscellaneous
verbose: Toggles whether warnings are thrown when the solver exits early. Defaults to true.
因此,要关闭警告,您只需执行 solve(prob,alg;verbose=false)
。
The simulation allows for particles to hit devices - to prevent the continued simulation of such particles, I use the unstable_check of the solver
使用 DiscreteCallback
或 ContinuousCallback
和 affect!(integrator) = terminate!(integrator)
是更好的方法。
我有一个程序可以使用 Julia 的微分方程包模拟粒子的路径。模拟允许粒子撞击设备 - 为防止继续模拟此类粒子,我使用解算器的 unstable_check
(特别是 EulerHeun
解算器)。但是,这会导致如下警告:
┌ Warning: Instability detected. Aborting
└ @ SciMLBase <path>\.julia\packages\SciMLBase[=10=]s9uL\src\integrator_interface.jl:351
当我模拟数千个粒子时,这可能会很烦人(而且很慢)。
我可以取消这个警告吗?如果没有,是否有另一种(更好的)方法来中止某些粒子的模拟?
我认为代码示例在这里没有意义/没有必要;如果您不这么认为,请告诉我。
有 Suppressor.jl
,虽然我不知道这是否会减少您从创建警告中获得的开销,所以 DiffEq 特定的设置可能是更好的方法(我不知道虽然对 DiffEq 了解不多,抱歉!)
这是自述文件中的示例:
julia> using Suppressor
julia> @suppress begin
println("This string doesn't get printed!")
@warn("This warning is ignored.")
end
只是为了抑制你想要的警告 @suppress_err
https://diffeq.sciml.ai/stable/basics/common_solver_opts/#Miscellaneous
verbose: Toggles whether warnings are thrown when the solver exits early. Defaults to true.
因此,要关闭警告,您只需执行 solve(prob,alg;verbose=false)
。
The simulation allows for particles to hit devices - to prevent the continued simulation of such particles, I use the unstable_check of the solver
使用 DiscreteCallback
或 ContinuousCallback
和 affect!(integrator) = terminate!(integrator)
是更好的方法。