Изменить зависимую переменную в жестком решателе (vode)
Я использую dvode ODE от netlib для решения жесткой разреженной системы (приложение - химический состав атмосферы). По первому вызову подпрограммы dvode
завершает набор задач инициализации и принимает массив начальных значений зависимой переменной y
в качестве ввода. В последующих вызовах процедура выполняет фактическую интеграцию и массив y
используется только в качестве вывода.
По разным причинам мне нужно изменить один элемент зависимого массива y
во время интеграции. Как y
используется в качестве вывода для всех, кроме первого вызова dvode
, модификации входных значений y
игнорируются Похоже, соответствующие данные хранятся в массиве рабочей области.
Есть ли способ заставить dvode
позволить мне изменить значение зависимого массива во время интеграции? Я не хочу связываться с внутренностями решателя, и, если возможно, я хочу избегать изменения массивов рабочих пространств, поскольку могут быть все виды зависимостей, которые будет трудно предвидеть. Я пробовал чередовать вызовы инициализации и интеграции, но это сильно замедляет работу.
Если нет четкого решения, я бы также подумал о том, чтобы попробовать другой (совместимый с Фортраном) решатель для жестких нелинейных ОДУ.