Как заставить Rosenbrock23 работать с ODE в DSL ParameterizedFunctions.jl? - PullRequest
0 голосов
/ 30 января 2019

В дополнение к этот вопрос , у меня та же модель, реализованная в ParameterizedFunctions.jl DSL.Работает следующий MWE:

using DifferentialEquations
using Plots

# Modeling a consecutive / parallel reaction in a CSTR
# A --> 2B --> C, C --> 2B, B --> D
# PETERSEN-Matrix
#   No.     A       B       C       D       Rate
#   1      -1       2                       k1*A
#   2              -2       1               k2*B*B
#   3               2      -1               k3*C
#   4              -1               1       k4*B

fpr! = @ode_def ConsecutiveParallelReaction begin
    dA = -k_1*A + q_in/V_liq*(A_in - A)
    dB = 2*k_1*A - 2*k_2*B*B + 2*k_3*C - k_4*B + q_in/V_liq*(B_in - B)
    dC = k_2*B*B - k_3*C + q_in/V_liq*(C_in - C)
    dD = k_4*B + q_in/V_liq*(D_in - D)
end k_1 k_2 k_3 k_4 q_in V_liq A_in B_in C_in D_in

u0 = [1.5, 0.1, 0, 0]
params = [1.0, 1.5, 0.75, 0.15, 3, 15, 0.5, 0, 0, 0]
tspan = (0.0, 15.0)
prob = ODEProblem(fpr!, u0, tspan, params)
sol = solve(prob)
plot(sol)

Однако при sol = solve(prob, Rosenbrock23()) (и даже при autodiff=false) возникает следующая ошибка:

ERROR: LoadError: MethodError: Cannot `convert` an object of type Array{Float64,1} to an object of type Float64

Я полагаю, это аналогичная проблемакак и выше, но так как я не определил здесь явные векторы Float64 и autodiff=false не устраняет ошибку, я не знаю, как это исправить.Есть предложения?

1 Ответ

0 голосов
/ 01 февраля 2019

Из комментариев кажется, что это действительно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...