Изменить зависимую переменную в жестком решателе (vode)

Я использую dvode ODE от netlib для решения жесткой разреженной системы (приложение - химический состав атмосферы). По первому вызову подпрограммы dvode завершает набор задач инициализации и принимает массив начальных значений зависимой переменной y в качестве ввода. В последующих вызовах процедура выполняет фактическую интеграцию и массив y используется только в качестве вывода.

По разным причинам мне нужно изменить один элемент зависимого массива y во время интеграции. Как y используется в качестве вывода для всех, кроме первого вызова dvode, модификации входных значений y игнорируются Похоже, соответствующие данные хранятся в массиве рабочей области.

Есть ли способ заставить dvode позволить мне изменить значение зависимого массива во время интеграции? Я не хочу связываться с внутренностями решателя, и, если возможно, я хочу избегать изменения массивов рабочих пространств, поскольку могут быть все виды зависимостей, которые будет трудно предвидеть. Я пробовал чередовать вызовы инициализации и интеграции, но это сильно замедляет работу.

Если нет четкого решения, я бы также подумал о том, чтобы попробовать другой (совместимый с Фортраном) решатель для жестких нелинейных ОДУ.

0 ответов

Другие вопросы по тегам